spy4x/seed
Full-stack startup monorepo template. Build your next startup idea with best practices from day 1!
Seed
Full-stack startup monorepo template. Build your next startup idea with best practices from day 1!
๐ค Motivation. Why Seed?
๐ก After working on dozens of startup projects, I realised a pattern of applications/code/infrastructure that every startup needs.
๐จโ๐ป Instead of repeating myself from project to project I decided to extract a project template into this seed.
๐ Now anyone can clone this repo and get all it's benefits for their startup.
๐ More about benefits in the Roadmap section.
๐ Table of Contents
โ๏ธ Prerequisites
You need to have next things:
- Docker (tip:
brew install --cask docker) - Node.js (tip:
brew install nvm && nvm install 18) - Yarn (tip:
npm i -g yarn) - Clone this repo (tip:
git clone git@github.com:spy4x/seed.git) - Install dependencies
yarnand build essential docker imagesyarn docker:init. On first run it will download all dependencies, so grab your favourite coffee or tea while initialization magic happens โ
โถ๏ธ Run it locally
- Start all apps and local infrastructure with
yarn start. - Open in your browser:
- Frontend: http://localhost:4200
- Admin Panel: http://localhost:4201
- Backend Swagger: http://localhost:8080/api
โก Tools used
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
๐ฏ Roadmap
What is implemented and what is planned.
Environment and code organisation
โ
Manage monorepo with multiple frontend and backend projects
โ
Running everything locally with a single command - $ yarn start
โ
Deploying apps to the cloud
โ
TypeScript config (strict rules)
โ
ESLint config (strict rules)
โ
Prettier config
โ
Pre-commit hook for code quality control
โ
Deploy to production with a single command - $ yarn deploy:all
๐ CI/CD
๐ Manage environments on local machine
๐ Follows "12 Factor App"
๐ Calculate affected apps based on latest release tag
๐ Staging environment
๐ Manage commits
๐ Update versions
Backend
โ
Backend infrastructure diagram
โ
Cloud Run
โ
Nest.js
โ
Prisma
โ
Configure Swagger integration with Nest.js
โ
CQRS architecture
โ
Verify user JWT authentication
๐ Unit-testing controller
โ
Unit-testing command handler
โ
Unit-testing query handler
๐ Unit-testing event handler
๐ Load-testing
โ
Logging
โ
Schedule tasks
โ
Users management
โ
REST API
โ
Send Push notifications
๐ Http and Redis caching
๐ Stripe subscriptions and payments
Database
โ
Automatic backups
โ
Restore backup
โ
Read replicas
๐ Automatic database migrations
Files upload
๐ Cloud Storage security rules
๐ Handle upload
๐ Keep track of files
๐ Resize uploaded file
Frontend
Shared
โ
Authentication
โ
NgRx
โ
E2E-testing
โ
Unit-testing UI components
โ
Unit-testing NgRx State
โ
Unit-testing Container component
๐ File upload
๐ Logging
๐ Build once, use bundle for every environment
Styles
โ
TailwindCSS + Mobile-first responsive design
โ
Styles shared between frontend apps
PWA
๐ Offline work
๐ Push Notifications
๐ Auto-update
๐ Installable
Admin Panel
๐ Users management
๐ Groups management
๐ Reset user's password
Web Client
๐ Realtime update of data from backend
๐ Group access to data
๐ Manage your personal account - avatar, email, oAuth providers, groups memberships
๐ Manage group account - avatar, members, accesses
๐ Invite person to your group by email
๐ Transfer ownership of a group
โ Contribution
Contributions are welcome, either it is a typo fix, bug fix, feature proposal, a pull request or anything else!
For more info follow contributing guidelines.
Credits
๐ป Created by Anton Shubin
โค๏ธ Special thanks to contributors:
|
|
|
|
