- It should support both a managed and self-hosted offering
- It should support geo-distributed data for latency and compliance
- It should use dependencies that you can self-host or buy as a managed service
- Setup web stack consisting of Next.js, Tailwind CSS, and Prisma
- Add authentication using Next Auth
- Add support for user and workspace deletion
- Add monorepo setup with NX
- Add good testing facilities, incl. end to end testing
- Add Docker dev containers and Docker Compose for local development with all dependencies set up
- Add docs with Docusaurus
- Add highly configurable authorization management
- Add workspace and groups administration
- Add SSO and SAML support using Work OS or BoxyHQ
- Add billing, subscription and tax management with support for usage-based pricing using Stripe or Paddle
- Add Docker image builds using Github CI/CD
- Add deployment documentation for Postgres and [CockroachDB])(https://www.cockroachlabs.com)
- Add guides for setting up managed versions of dependencies
- Add contributing docs
- Add terms of service and privacy policy
- Add an admin/support page
- Add options for rate limiting on a public and authenticated basis
- Add a quota and usage management and billing framework
- Add option for real-time/collaborative features using Soketi and Automerge
- Add instrumentation with getanalytics.io, Next.js Analytics, and Grafana
- Add configuration of geo-affinity for workspaces that gets passed through to dependent services
- Add data export functionality
- Add audit logging
- Ensure codebase preparedness for compliance with Vanta
- Add BI with Airbyte, BigQuery, dbt, and Metabase
- Add guidelines for building a landing page with webflow
- Add Temporal for advanced workflows
- Add customer lifecycle emails (welcome, getting started, etc.) using customer.io or Sendgrid
- Add customer support with Chatwoot
- Add status page with Atlassian Statuspage
- Add search with https://typesense.org
Complete the following steps to set up a development environment
- Copy
.env.example
into.env
(ignored by Git) and populate the settings. For development purposes, it is sufficient to specify one authentication provider. You can use Ethereal to quickly configure email authentication. - Install Docker if you don't already have it installed
- Spin up a development container in VS Code by running the "Remote-Containers: Reopen in Container" command
- Install dependencies by running
yarn install
- Run migrations with
yarn migrate
- Run
yarn start
to start the site onlocalhost:3000
- Run
yarn docs:start
to start the docs site onlocalhost:3001
This project uses nx
for monorepo management:
- Run
nx g @nrwl/TYPE:lib my-lib
to generate a library (replaceTYPE
with e.g.next
orworkspace
) - Run
nx e2e frontend
ornx affected:e2e frontend
to run end-to-end tests - Run
nx graph
to see a diagram of the project dependencies