This project has been migrated from PHP to a modern Next.js 14 + TypeScript stack with Prisma for database management.
- Framework: Next.js 14 (React 18)
- Language: TypeScript
- Database: PostgreSQL
- ORM: Prisma
- Styling: CSS Modules
- API: Next.js App Router with API Routes
/workspaces/Landing-Page/
├── app/
│ ├── api/
│ │ └── signup/
│ │ └── route.ts # Beta signup API endpoint
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ ├── globals.css # Global styles
│ └── favicon.ico
├── components/
│ ├── BetaModal.tsx # Beta signup modal component
│ ├── BetaModal.module.css # Modal styles
│ └── Home.module.css # Home page styles
├── lib/
│ └── db.ts # Prisma client singleton
├── prisma/
│ └── schema.prisma # Database schema
├── public/
│ ├── favicon.svg
│ ├── logo.svg
│ └── logo-black.svg
├── package.json
├── next.config.js
├── tsconfig.json
└── .env.local # Environment variables (not in git)
npm installCreate a .env.local file in the root directory:
cp .env.local.example .env.localUpdate .env.local with your PostgreSQL connection string:
DATABASE_URL="postgresql://user:password@localhost:5432/cucumbu"
Generate Prisma client and run migrations:
# Generate Prisma client
npx prisma generate
# Create the database and run migrations
npx prisma migrate dev --name init
# Optional: Seed the database (if seed.ts exists)
# npx prisma db seedTo view your database in Prisma Studio:
npx prisma studionpm run devOpen http://localhost:3000 in your browser.
- Hero section with video
- Features showcase
- How it works section
- Integrations showcase
- Call-to-action section
- Fully responsive design
- Modal form with validation
- Fields: Name, Email, Company, Role, Use Case
- Database persistence
- Error handling and user feedback
- Prevents duplicate email registrations
POST /api/signup
Accepts form data with the following fields:
name(required): User's full nameemail(required): User's email addresscompany(optional): Company/organization namerole(optional): User's rolemessage(optional): Use case description
Response:
{
"success": true,
"message": "Welcome to the beta! Check your email for next steps.",
"data": { /* signup record */ }
}model BetaSignup {
id Int @id @default(autoincrement())
name String
email String @unique
company String?
role String?
message String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}| Old File | New Location | Notes |
|---|---|---|
index.html |
app/page.tsx |
Converted to React component |
styles.css |
components/Home.module.css |
Converted to CSS modules |
backend/beta-signup.php |
app/api/signup/route.ts |
API route in TypeScript |
composer.json |
package.json |
NPM dependencies |
- Edit React components in
/componentsor/app - Styles are colocated as CSS modules
- API routes are in
/app/api
- Update
prisma/schema.prisma - Create migration:
npx prisma migrate dev --name feature_name
npm run build
npm startRequired:
DATABASE_URL: PostgreSQL connection string
Optional (for future email functionality):
SENDGRID_API_KEYorNODEMAILER_*variables
- Email Integration: Add email notification on signup (SendGrid, Nodemailer, etc.)
- Admin Dashboard: Create admin panel to view signups
- Rate Limiting: Add rate limiting to the signup endpoint
- Email Validation: Verify emails before accepting signups
- Deployment: Deploy to Vercel, AWS, or your preferred hosting
npm i -g vercel
vercelCreate a Dockerfile for containerized deployment.
npm run build
npm startnpm run dev -- -p 3001- Verify
DATABASE_URLin.env.local - Ensure PostgreSQL server is running
- Check firewall/network settings
rm -rf node_modules/.prisma
npx prisma generateFor detailed API documentation, see API_DOCS.md (if available).
- Create a feature branch
- Make changes
- Test thoroughly
- Submit pull request
© 2026 cucumbu. All rights reserved.
For issues or questions, contact: team@cucumbu.com