Join the community — ask questions, get help, discuss ideas, and meet other contributors on our Discord server.
- Node.js >= 20
- npm >= 10 (bundled with Node.js)
- Docker & Docker Compose
- React Native dev environment — follow the official setup guide
# 1. Fork and clone the repo
git clone https://github.com/Dev-Card/DevCard.git
cd devcard
# 2. Install dependencies
npm install # root (orchestrator)
npm --prefix packages/shared install # shared types/utils
npm --prefix apps/backend install # backend API
npm --prefix apps/web install # web app
npm --prefix apps/mobile install # mobile app (if working on mobile)
# 3. Start PostgreSQL + Redis
docker compose up -d
# 4. Configure environment
cp .env.example .env
# Edit .env with your OAuth credentials
# 5. Run database migrations and seed
npm run db:migrate
npm run db:seed
# 6. Start development
npm run dev:backend # Backend API on :3000
npm run dev:mobile # React Native appThis project uses npm to run tests across different parts of the codebase.
To execute backend tests:
npm run testThe backend uses Vitest:
npm --prefix apps/backend run test
npm --prefix apps/backend run test:watchThe mobile app uses Jest:
npm --prefix apps/mobile run testCurrently, the web app does not define a test script.
The shared package does not include test scripts. It only provides linting and type checking.
devcard/
├── apps/backend/ # Fastify API (TypeScript)
├── apps/mobile/ # React Native mobile app
├── apps/web/ # SvelteKit web backup
└── packages/shared/ # Shared types, utils, platform registry
- TypeScript for all new code
- ESLint + Prettier for formatting (run
npm run lintbefore committing) - Conventional Commits for commit messages (
feat:,fix:,docs:,chore:) - Write tests for new features and bug fixes
- Create a feature branch from
main:git checkout -b feat/your-feature - Make your changes with clear, descriptive commits
- Ensure all tests pass:
npm run test - Ensure linting passes:
npm run lint - Open a PR against
mainwith a clear description of the change - Wait for review — maintainers will respond within 48 hours
- Use GitHub Issues for bug reports and feature requests
- Include reproduction steps for bugs
- Search existing issues before creating a new one
Be kind, inclusive, and constructive. We follow the Contributor Covenant.
Thank you for helping make DevCard better! 🎉