FreStell is a Phase 1 MVP for a decentralized freelance marketplace with:
- Trustless escrow via Stellar Soroban smart contracts (Rust/Wasm)
- WebAuthn passkeys for phishing-resistant authentication
- AI proposal coach to help freelancers write better bids
- 3-tier verification system (email → government ID → earned badges)
- Acceptance criteria enforcement — every job must have explicit "done" checklists
frestell/
├── apps/
│ ├── web/ → Next.js frontend (React + TypeScript)
│ └── api/ → NestJS backend (Node.js + Express)
├── packages/
│ └── shared/ → Zod schemas, DTOs, shared types
├── services/ → Extractable microservices
│ ├── ai/
│ ├── payments/
│ ├── blockchain/
│ └── chat/
├── contracts/ → Soroban smart contracts (Rust/Wasm)
├── infrastructure/ → Docker, Nginx, Terraform, monitoring
└── .github/
└── workflows/ → CI/CD pipelines
- Node.js 18+ and npm 9+
- Rust 1.70+ (for contracts)
- PostgreSQL 15+ and Redis 7+ (for local dev with Docker Compose)
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Initialize database (when ready)
cd apps/api
npx prisma migrate dev# Start all apps (web + api)
npm run dev
# Or individually:
cd apps/web && npm run dev # Frontend: http://localhost:3000
cd apps/api && npm run dev # Backend: http://localhost:3001npm run build # Build all apps
npm run test # Run all tests
npm run lint # Lint all code
npm run format # Format code with Prettier- Frontend: Next.js 14, React 18, TailwindCSS
- Backend: NestJS 10, Prisma ORM, PostgreSQL, Redis
- Blockchain: Stellar SDK, Soroban (Rust)
- Auth: WebAuthn (@simplewebauthn), JWT, OAuth2
- Chat: Socket.io for real-time messaging
- DevOps: Docker, Docker Compose, GitHub Actions, Terraform
- Modular monolith: Every business domain is a separate NestJS module with clear boundaries
- Service-ready: Code structured so services can be extracted to separate deployments later without refactoring
- Shared packages: DTOs, types, and validators live in
packages/sharedto prevent duplication - Trustless escrow: Soroban smart contracts enforce payment rules on-chain (no platform can cheat)
- Create a feature branch:
git checkout -b feat/your-feature - Make changes and test locally
- Commit with conventional commits:
git commit -m "feat: add X feature" - Push and open a PR (CI runs automatically)
- After review, merge to main (auto-deploys to staging)
- Monorepo scaffold
- Nx workspace + build pipeline
- Auth (passkeys + JWT + 2FA)
- User profiles + verification
- Job posting with acceptance criteria
- AI proposal coach
- Smart contracts (escrow + dispute resolution)
- Real-time workspace + messaging
- Admin panel
- Deployment pipeline
See frestell_plans/goals.html for the full 320+ goal roadmap.
- All secret keys are encrypted (AES-256-GCM) — never stored in plaintext
- Passkeys are phishing-resistant (WebAuthn/FIDO2)
- Rate limiting, CSRF protection, and input validation on all endpoints
- SQL injection prevention via Prisma parameterized queries
- Escrow is trustless via Soroban contracts (no platform can unilaterally move funds)
See CONTRIBUTING.md for contribution guidelines.
[Your license here]
- Issues: GitHub Issues
- Docs: frestell_plans/ folder
- Email: [your contact]