A Next.js 16 + React 19 Monolithic CRM & CMS application.
- CRM: Accounts, Contacts, Leads, Opportunities management.
- CMS: Blog, Media Library, Dynamic Pages.
- AI Integration: Deep integration with OpenAI, Azure AI, and AWS Bedrock/Connect.
- Communications: Sustainability-focused Email (Gmail/SES), Voice (AWS Connect/Chime), SMS (Pinpoint).
- Multi-Tenancy: Team-based data isolation.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Database: MongoDB (via Prisma ORM)
- Auth: NextAuth.js
- Styling: Tailwind CSS + Radix UI / Shadcn
- Infrastructure: Vercel (Frontend), AWS (Voice/Email), Azure (AI)
- Node.js 20+
- pnpm
- MongoDB Instance (Atlas or Local)
-
Clone the repository:
git clone <repo-url> cd basalt-cms
-
Install dependencies:
pnpm install # OR npm install --force # Due to React 19 alpha peer deps
-
Environment Setup: Duplicate
.env.local.exampleto.env.localand fill in the required keys.cp .env.local.example .env.local
Critical: You MUST set
API_KEY_ENCRYPTION_KEYin.env.localfor the app to start securely. -
Database Setup:
npx prisma generate npx prisma db push
-
Run Development Server:
npm run dev
- Auth:
/cmsroutes are protected by Global Auth Middleware. - Secrets: API keys stored in the database are encrypted using AES-256-CBC.
- Isolation: Data is isolated by
team_id.
- Unit Tests: Run
npm run test(Vitest) - E2E Tests: Cypress (in
cypress/)
app/: Next.js App Router (pages & API)components/: React componentslib/: Utilities, helpers, and shared logicprisma/: Database schema and seedsscripts/: Build and maintenance scripts