This project is a media category of JMO and Africa growing startup focus on development of Education and Media Publicity.
# JMO Media Mini Fullstack
JMO Media is a Next.js mini fullstack media platform for structured articles,
development content, community signups, role-aware publishing, and comments.
The frontend follows the supplied `JMO Media UI_UX Design.make` direction:
purple/black primary branding, gold CTAs, development-area cards, featured
content, trending posts, email signup, ecosystem CTA, footer, and a light/dark
screen toggle.
## Stack
- Next.js App Router
- React 19
- Tailwind CSS 4
- Prisma 7
- Neon/Postgres
- NextAuth credentials auth
- Vercel Blob
- Resend
- Zod validation
## Setup
1. Copy `.env.example` to `.env.local`.
2. Set `DATABASE_URL` to your Neon connection string.
3. Set `NEXTAUTH_SECRET` to a strong random value.
4. Set `NEXTAUTH_URL` to your local or deployed app URL, for example `
localhost`.
5. For production-grade uploads, set `BLOB_READ_WRITE_TOKEN`.
6. For email delivery, set `RESEND_API_KEY` and `EMAIL_FROM`.
7. Install dependencies:
```bash
npm install
```
8. Generate Prisma Client and apply migrations:
```bash
npm run db:generate
npm run db:migrate
npm run db:seed
```
9. Run the app:
```bash
npm run dev
```
## Vercel Production Deploy
Use Vercel with the following environment variables:
```env
DATABASE_URL=postgresql://...
DIRECT_URL=postgresql://...
NEXTAUTH_SECRET=your-production-secret
NEXTAUTH_URL=
your-domain.vercel.app
BLOB_READ_WRITE_TOKEN=vercel_blob_rw_token
RESEND_API_KEY=re_...
EMAIL_FROM=JMO Media
```
Recommended Vercel build command:
```bash
npm run vercel-build
```
The repository also includes vercel.json with the same build command so the project settings stay explicit in source control.
That script runs:
```bash
prisma generate && prisma migrate deploy && next build
```
Pre-launch checklist:
1. Add all production environment variables in Vercel.
2. Confirm `NEXTAUTH_URL` matches the production domain exactly.
3. Confirm `EMAIL_FROM` uses a verified Resend sender/domain.
4. Confirm `BLOB_READ_W …