You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MarceVerse is a multiverse-themed developer portfolio that showcases projects, professional experience, education, certifications, activities, and competitions. The platform consists of three independently deployable applications:
App
Description
Default Port
client
Public portfolio website with cosmic theme, particles, and animations
5173
admin
Content management dashboard with drag-and-drop reordering
5174
server
RESTful Express API with MongoDB and Cloudinary integration
Dual entry points β The Express app is built once in server/app.js. Local dev uses server.js (connects DB + listens), Vercel uses api/index.js (lazy DB connection as a serverless function).
Config-driven admin β Five entity types share one list page and one form page via entityConfig.js + entitySchema.js, eliminating ~80% of CRUD boilerplate.
API-key auth β Admin routes are protected by a static API key compared with crypto.timingSafeEqual (no JWT complexity needed for a single-user admin).
Vercel monorepo β Three separate Vercel projects point to one GitHub repository, each with its own Root Directory.
# Clone the repository
git clone https://github.com/Marcuii/marceverse.git
cd marceverse
# Install all dependencies (client + server + admin)
npm run install-all
Environment Variables
Each sub-project requires its own .env file. Copy the examples and fill in real values:
# From the root directory β starts server, client, and admin concurrently
npm run dev
Run Individually
npm run server # Express API on :5000
npm run client # Portfolio site on :5173
npm run admin # Admin dashboard on :5174
Deployment (Vercel)
The monorepo deploys as three separate Vercel projects, all linked to the same GitHub repository. Each project uses a different Root Directory.
1. Server (API)
Setting
Value
Root Directory
server
Framework Preset
Other
Environment Variables
All from server/.env.example
The server/vercel.json rewrites all routes to the api/index.js serverless function. The serverless entry lazily connects to MongoDB on cold start and reuses the connection across warm invocations.
2. Client (Portfolio)
Setting
Value
Root Directory
client
Framework Preset
Vite
Environment Variables
All from client/.env.example
Point VITE_API_BASE_URL to the deployed server URL (e.g. https://marceverse-api.vercel.app/api).
3. Admin (Dashboard)
Setting
Value
Root Directory
admin
Framework Preset
Vite
Environment Variables
All from admin/.env.example
Point VITE_API_BASE_URL to the deployed server URL. Add the admin's production domain to the server's CORS_ORIGINS.
Post-Deployment Checklist
Server CORS_ORIGINS includes both the client and admin production domains
Client and admin VITE_API_BASE_URL points to the deployed server
MongoDB Atlas network access allows Vercel's IP ranges (or 0.0.0.0/0)
Cloudinary credentials are set in the server's Vercel environment
π A creative and responsive multiverse-themed full-stack portfolio built with the MERN stack and Tailwind CSS. Showcases skills, projects, education, and experience through a cosmic UI, powered by a custom Node.js/Express REST API and MongoDB. Includes a secure React admin dashboard for seamless content management and Cloudinary integration.