Pixisphere is a backend platform built with Node.js, Express.js, and MongoDB, supporting three user roles: client, partner, and admin.
This backend handles:
- Authentication (Email/Password + OTP)
- Partner onboarding & admin approval
- Client inquiries (leads)
- Partner portfolios
- Admin dashboard (approvals, KPIs, reviews)
- Category and location management
- Node.js with Express.js
- MongoDB with Mongoose
- JWT for authentication
- bcryptjs for password hashing
- dotenv, cors, etc.
git clone https://github.com/your-username/pixisphere-backend.git
cd pixisphere-backend- Install dependencies
npm install- Setup environment variables Create a .env file in the root:
PORT=5000
MONGO_URI=mongodb://localhost:27017/pixisphere
JWT_SECRET=your_jwt_secret- Start MongoDB
mongod
- Start the server
npm startYou should see:
Server running on port 5000
MongoDB connected- Register as a partner
POST /auth/register
Body:
{
"name": "Devesh",
"email": "partner@example.com",
"password": "Secret123!",
"role": "partner"
}- Login (fails until admin approves)
POST /auth/login
Body:
{
"email": "partner@example.com",
"password": "Secret123!"
}Will return 403 Forbidden if not yet approved.
As Admin: Approve the partner
GET /admin/partners // list pending profiles
PUT /admin/partners/:id/approveUse admin token for this!
- Partner logs in successfully
POST /auth/login
Returns: { token }- Submit partner profile
POST /partners/onboard
Headers:
Authorization: Bearer <partner_token>
Body:
{
"bio": "Experienced photographer",
"serviceCategories": ["wedding", "event"],
"city": "Delhi",
"documents": ["mock-url-a", "mock-url-b"]
}- Client submits inquiry
POST /inquiries
Headers: Bearer <client_token>
Body:
{
"category": "wedding",
"city": "Delhi",
"date": "2025-06-20",
"budget": 5000,
"imageUrl": "http://image.com"
}7- Inquiry (Lead) APIs
Create Inquiry (Client)
POST /inquiries
Headers: Authorization: Bearer <client_token>
{
"category": "wedding",
"city": "Delhi",
"date": "2025-07-01",
"budget": 15000,
"imageUrl": "http://image.com/photo.jpg"
}8- Get Assigned Leads (Partner)
GET /inquiries/leads Headers: Authorization: Bearer <partner_token>
9- Update Inquiry Status (Partner)
PUT /inquiries/:id/status Headers: Authorization: Bearer <partner_token>
{
"status": "responded"
}10- Portfolio APIs (Partner) Add Portfolio Item
POST /portfolio Headers: Authorization: Bearer <partner_token>
{
"description": "Sample wedding project",
"imageUrl": "http://portfolio.com/image1.jpg"
}