Contributing
Commit Conventions
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
Types
| Type |
Usage |
feat |
New feature |
fix |
Bug fix |
refactor |
Code change without bug fix or feature |
docs |
Documentation only |
style |
Formatting, linting (no logic change) |
chore |
Build, CI, dependencies |
test |
Adding/updating tests |
Scopes
| Scope |
Area |
mobile |
Flutter app |
admin |
Admin web app |
seller |
Seller web app |
api |
Backend API routes |
db |
Database schema |
docs |
Documentation site |
Examples
feat(mobile): add order cancellation flow
fix(admin): correct commission calculation on reports
docs(supabase): add RLS policy documentation
Coding Standards
Flutter
- Use Riverpod for state management
- Use freezed for immutable models
- Use json_serializable for JSON parsing
- Follow
flutter_lints package conventions
- Widgets go in
lib/presentation/widgets/
- Screens go in
lib/presentation/screens/
- Providers go in
lib/providers/
- Models go in
lib/models/
- Services go in
lib/services/
React (Web)
- Use Next.js App Router (
app/ directory)
- Use Redux Toolkit for global state
- Use Chakra UI for components
- API routes in
app/api/
- Components in
components/
- Redux slices in
lib/redux/
- Services in
lib/services/
Pull Request Process
- Branch from
main using feat/, fix/, etc. prefixes
- Keep PRs focused — one feature/fix per PR
- Write a clear description linking to any issues
- Ensure linting passes
- Request review from a maintainer
- Squash-merge when approved