A full-stack event management platform built with Next.js, Sanity CMS, and Neon Database.
- 🎪 Event listing and details
- 👥 Speaker profiles
- 📝 Event registration
- 📧 Newsletter subscription
- 🎫 Ticket management
- 📱 Responsive design
- Frontend: Next.js 14, TypeScript, Tailwind CSS, shadcn/ui
- CMS: Sanity.io
- Database: Neon (PostgreSQL)
- ORM: Drizzle
- Infrastructure: SST (AWS)
- Package Manager: npm
- Monorepo: Turborepo
apps/
├── web/ # Next.js frontend application
└── studio/ # Sanity Studio (Vite-based React app)
- Node.js 18+
- npm 10+
- Sanity.io account
- Neon Database account
- Vercel account (for frontend deployment)
- AWS account (optional, for SST deployment)
NEXT_PUBLIC_SANITY_PROJECT_ID=
NEXT_PUBLIC_SANITY_DATASET=
NEXT_PUBLIC_SANITY_API_VERSION=
DATABASE_URL=
POOLED_DATABASE_URL=
SANITY_STUDIO_PROJECT_ID=
SANITY_STUDIO_DATASET=
- Install dependencies:
npm install
- Start development servers:
npm run dev
This will start both:
- Next.js frontend: http://localhost:3000
- Sanity Studio: http://localhost:3333
The Next.js frontend is configured for deployment on Vercel. Since this is a monorepo, you'll need to:
- Import your repository to Vercel
- Set the root directory to
apps/web
- Configure build settings:
- Framework Preset: Next.js
- Build Command:
npm run build
- Output Directory:
.next
- Add environment variables from
.env
- Deploy
The Sanity Studio is a standalone Vite-based React application that can be deployed in two ways:
- Create a new project in Vercel
- Set the root directory to
apps/studio
- Configure build settings:
- Framework Preset: Vite
- Build Command:
npm run build
- Output Directory:
dist
- Add environment variables from
.env
- Set the following environment variables in Vercel:
SANITY_STUDIO_PROJECT_ID=your_project_id SANITY_STUDIO_DATASET=production
- Deploy
Your studio will be available at https://your-project.vercel.app
The project includes SST configuration for deploying to AWS:
- Configure AWS credentials:
aws configure
- Deploy using SST:
cd apps/studio
npx sst deploy --stage prod
When using SST, you can manage environment variables in three ways:
- Automatic Resource Linking: SST can automatically connect your services
- Secret Management: Use the SST CLI to set sensitive values
- Stage Configuration: Set different values for development/production
See the SST docs for details.
# Generate database schema
npm run db:generate
# Push schema changes
npm run db:push
# Open database UI
npm run db:studio
- Make changes to the schema in
apps/studio/schemas/
- Update Sanity Studio types:
cd apps/studio && npm run typegen
- Update database if needed:
cd apps/web && npm run db:push
- Test changes locally using
npm run dev
- Deploy
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.