This project is a minimal content management system (CMS) built as a technical test. It demonstrates full-stack engineering using Remix, Prisma, Tailwind CSS, and Supabase (Postgres + optional Auth).
-
Article Management
- Create, read, update, delete articles
- Rich text editing with React-Quill
- Preview mode with sanitization (DOMPurify)
-
Tree View
- Articles organized into parent-child relationships
- Sidebar navigation with collapsible categories
-
Responsive UI
- Tailwind CSS styled
- Layout with sidebar, header, and main content
-
Database
- Prisma schema with self-referencing
Articlemodel - Postgres on Supabase
- Prisma schema with self-referencing
-
Deployment
- Optimized for Vercel deployment
- Environment variables for Supabase and database connections
- Remix (React framework with server routes)
- Prisma (database ORM)
- Tailwind CSS
- Supabase (Postgres + Auth)
- React-Quill (rich text editor)
- Node.js 18+
- Postgres (Supabase recommended)
-
Clone the repository:
git clone <repo-url> cd <repo-folder>
-
Install dependencies:
npm install
-
Configure environment variables:
cp .env.example .env
Fill in values for
DATABASE_URL,SUPABASE_URL,SUPABASE_ANON_KEY,SUPABASE_SERVICE_ROLE_KEY, andSESSION_SECRET. -
Run Prisma migrations:
npx prisma generate npx prisma migrate dev --name init
-
Start the development server:
npm run dev
-
Open http://localhost:3000.
app/
├─ components/ # shared UI (Header, Sidebar)
├─ lib/ # db and supabase clients
├─ routes/ # Remix routes (articles, auth, etc.)
│ └─ articles/ # index, new, $id pages
├─ styles/ # Tailwind CSS
prisma/
├─ schema.prisma # database schema
-
Push code to GitHub.
-
Connect the repo to Vercel.
-
Set environment variables in Vercel dashboard.
-
Run database migrations:
npx prisma migrate deploy
- Add Supabase email/password auth to restrict article creation/editing.
- Improve the tree view with deeper nested levels.
- Extract reusable components (Header, Sidebar).
- Add delete functionality and confirmation UI.
This project is provided as part of a technical test. You may reuse the structure for educational purposes.