My personal starter project for all my SaaS as I like the tech stack I use and I want to have a consistent way of starting new projects.
- Simplicity: Keep it simple, stupid.
- Consistency: Use the same tech stack for all projects.
- Quality: Write clean, maintainable code.
- Speed: Develop fast, deploy fast.
- Security: Keep it secure.
- Free at start: Use free services until you need to scale.
- Automate: Automate everything.
- Mutability: Be ready to change to other tech stack withouth having to redo it again.
-
Clone the repository
git clone https://github.com/TheCukitoDev/starter.git
or if you use the GitHub CLI
gh repo clone TheCukitoDev/starter
-
Install the dependencies
pnpm install
-
Start the development server
pnpm run dev
-
Open the browser and go to
http://localhost:3000
or if you specified a PORT in the.env
file, go tohttp://localhost:${PORT}
Open the .env file and change the values to your own. You can check the .env.example file for the default values.
Or if you want to use Doppler, you must identify yourself with Doppler. Please follow the instructions here to install Doppler. You can then run the following command to get the secrets from Doppler.
doppler setup
Then you can run the following command to run commands using.
doppler run --command "${Your command here}"
If you have the Doppler Team Plan, you can use --watch
flag to watch for changes in the secrets.
doppler run --watch --command "${Your command here}"
And on deployment, make sure you use the deploy guide for Doppler here. Or you can just copy the secrets from Doppler and paste them in the .env
file.
-
Authentication: Authentication with 2FA, magic links, SSO, username and password, acount linking, user impersonation, etc.
-
Authorization: RBAC, permissions, etc.
-
Billing: Subscription, invoices, etc.
-
Settings: User settings, account settings, etc.
-
Notifications: Email, SMS, push notifications, etc.
-
Integrations: Google APIs, Stripe, etc.
-
Monitoring: Logs, metrics, etc.
-
Testing: Unit tests, integration tests, end-to-end tests, etc.
-
Deployment: Serverless, Docker, etc.
-
CI/CD: GitHub Actions, etc.
-
Documentation: API documentation, user documentation, etc.
-
SEO: Sitemap, robots.txt, etc.
-
Analytics: PostHog, etc.
-
Maintainability: Code quality, code reviews, etc.
-
Security: OWASP, CORS, etc.
-
Performance: Lighthouse, etc.
-
Best technologies on their fields
- React: A JavaScript library for building user interfaces.
- Next.js: The React framework for production.
- Tailwind CSS: A utility-first CSS framework for rapidly building custom designs.
- SWR: React Hooks library for data fetching.
- Node.js: JavaScript runtime built on Chrome's V8 JavaScript engine.
- Cosmos DB: A fully managed NoSQL database for modern app development.
- Lambda functions
- T3 Env: A simple and secure way to manage your environment variables.
- Cloudflare Pages: The best platform for deploying your frontend withouth bandwith limits.
- Crowdin for translations.
- next-intl for internationalization.
- GitHub for version control.
- GitHub Actions for CI/CD.
- Sentry for error tracking.
- Codecov for code coverage.
- Dependabot for dependency updates.
- PostHog: Open-source product analytics.
- Better Stack for monitoring and status page.
- Checkly for API monitoring.
- SST for serverless.
- Stripe for payments.
- PostHog for analytics.
- Storybook for component documentation.
- React Hook Form for forms.
- Zod for validation.
- GitBook for documentation.
- Vitest for unit tests.
- Playwright for end-to-end tests.
- Chromatic for visual regression tests.
Please make sure you follow the components installation guide here
pnpm run dev
For production, you need to build the project first.
pnpm run build
Then you can start the server.
pnpm start
or deploy it to the cloud.
pnpm run deploy
We provide a standard way to setup Clerk. You can create custom components and pages with Clerk. You can check the guide here
Important
Clerk Elements is on Beta. Please use it with caution. It is not recommended to use it in production.
First, you need to create a Clerk account and create a new project. Then you must copy the env variables and paste them in the .env
file. Or you can use Doppler to manage your secrets. It is just that simple.
We provide a standard way to setup Cosmos DB. You only need to paste the envs in the .env
file or use Doppler to manage your secrets. It is just that simple. When you want to do some queries or mutations, you can import the client from the lib/db
file.
Check the roadmap on the project's GH Repo here
Follow the CONTRIBUTING file. Please read the CODE_OF_CONDUCT file.
- TheCukitoDev for the idea and the project.
You can open an issue or contact me at [email protected].
If you want to contact me about a business proposal, you can contact me at [email protected]
Please open a discussion or contact me at [email protected].
Check the license file here.