Thank you for your interest in contributing! This guide will help you get started.
- Node.js 22+
- pnpm 10+
- Docker & Docker Compose
# 1. Fork & clone
git clone https://github.com/YOUR_USERNAME/moneystyle.git
cd moneystyle
# 2. Install dependencies
pnpm install
# 3. Setup environment
cp .env.example .env
# Edit .env with your values
# 4. Start database & storage
docker compose up -d db minio
# 5. Run migrations & seed
pnpm db:migrate
pnpm db:seed
# 6. Start dev server
pnpm dev
# Open http://localhost:3020- TypeScript strict mode
- ESLint: run
pnpm lintbefore committing - Mobile-first responsive design with Tailwind
- shadcn/ui for UI components
- Lucide React for icons
- Sonner for toast notifications
- ResponsiveDialog for modals (Dialog on desktop, Drawer on mobile)
All mutations use Server Actions in src/actions/:
- Always call
requireAuth()first - Validate input with Zod schemas
- Call
revalidatePath()after mutations - Return
{ success: true }or{ error: "message" }
- Mobile-first with responsive prefixes (
md:,lg:) - Use
FeatureGatefor feature-flagged content - Tab bars: icon on top, label below
- Cards on mobile: stacked rows, not side-by-side
Use conventional commits:
feat(transactions): add voice transaction support
fix(dashboard): correct budget rollover calculation
docs(readme): add deployment guide
- Create a feature branch from
main - Make changes with clear commits
- Run
pnpm lintandpnpm build - Test on mobile viewport
- Open a PR with description
- Link related issues
- Address review feedback
- Bank sync integration (Plaid/Open Banking)
- Unit and integration tests
- Translations (Arabic, Spanish, Portuguese, French)
- Accessibility improvements
- Performance optimization
- Blog content (financial tips, guides)
- Documentation improvements