Workspace-first task management for a freelancer or small internal team.
TaskRelay helps one workspace owner manage projects, assign tasks, approve completed work, invite team members, and send Telegram reminders.
Active product rules live in PROJECT_EXECUTION_RULES.md.
- Frontend: Next.js App Router, React 19, TypeScript
- API: Express 5, TypeScript
- Database: PostgreSQL with Prisma
- Bot: Telegram via Telegraf
- Jobs: PostgreSQL-backed notification/reminder worker
npm install
npm run db:generate
npx prisma migrate dev
npm run api:dev
npm run dev
npm run bot:dev
npm run worker:dev
npm run cleanup:dev
npm test
npm run typecheck
npm run build
npm run prod:checkDefault local URLs:
- Web:
http://127.0.0.1:3000 - API:
http://127.0.0.1:4000
Run the web and API servers in separate terminals during local development. Opening the web app without npm run api:dev running will show an API unavailable error.
Create .env from .env.example and fill:
DATABASE_URL
SESSION_SECRET
WEB_ORIGIN
NEXT_PUBLIC_API_BASE_URL
API_PORT
TELEGRAM_BOT_TOKEN
TELEGRAM_BOT_USERNAME
TELEGRAM_WEBHOOK_SECRET
PUBLIC_TELEGRAM_BOT_LINK
Never commit .env or print secrets in logs.
- MVP specification
- Implementation roadmap
- Prisma schema
- TODO
- Changelog
- Deployment checklist
- Security model
- Telegram flows
Do not treat this as public-launch ready until these are complete:
- Production secrets configured in the hosting provider.
- HTTPS web/API domains configured in
WEB_ORIGINandNEXT_PUBLIC_API_BASE_URL. - Database backup plan verified.
- Telegram webhook configured with
TELEGRAM_WEBHOOK_SECRET. - Browser E2E tests and monitoring configured.