Connecting Ethiopian content creators with brands for authentic collaborations
Create4Me is a full-stack marketplace platform that bridges the gap between content creators and brands in Ethiopia, enabling seamless campaign collaborations, applications, and payments.
- Features
- Tech Stack
- Getting Started
- Project Structure
- Development
- Deployment
- API Documentation
- Contributing
- β Professional Profiles - Showcase your work with portfolios, stats, and social links
- β Campaign Discovery - Browse and filter brand campaigns by category, budget, platform
- β Easy Applications - Apply to campaigns with cover letters and proposed pricing
- β Real-time Messaging - Communicate directly with brands
- β Analytics Dashboard - Track your applications, earnings, and performance
- β Profile Image Upload - Upload and manage your avatar
- β Campaign Management - Create, manage, and track campaigns
- β Creator Discovery - Find creators by category, rating, and platform
- β Application Review - Review and manage creator applications
- β Analytics - Track campaign performance and ROI
- β Direct Messaging - Connect with creators
- β Secure Authentication - JWT-based auth with role-based access control
- β Responsive Design - Beautiful glassmorphism UI that works on all devices
- β Real-time Updates - Live notifications and messaging
- β File Uploads - Profile pictures, portfolios, and campaign assets
- β Search & Filters - Advanced search with text indexing
- Framework: React 18 with TypeScript
- Build Tool: Vite 5
- Styling: Tailwind CSS 3
- Animations: Framer Motion
- Routing: React Router v6
- Icons: Lucide React + React Icons
- Charts: Recharts
- Runtime: Node.js with Express
- Language: TypeScript
- Database: MongoDB with Mongoose
- Authentication: JWT (jsonwebtoken)
- Security: Helmet, CORS, bcryptjs
- Development: Nodemon + ts-node
- Frontend: Vercel
- Backend: Railway / Heroku
- Database: MongoDB Atlas
- File Storage: Base64 (migrating to Cloudinary/S3)
- Node.js 18+ and npm/pnpm
- MongoDB (local or Atlas)
- Git
-
Clone the repository
git clone https://github.com/yourusername/create4me.git cd create4me -
Install dependencies
# Install root dependencies npm install # Or install individually cd backend && npm install cd ../frontend && npm install
-
Set up environment variables
Backend (
backend/.env):PORT=3001 NODE_ENV=development DATABASE_URL=mongodb://localhost:27017/create4me JWT_SECRET=your-super-secret-jwt-key-change-in-production FRONTEND_URL=http://localhost:5173
Frontend (
frontend/.env):VITE_API_URL=http://localhost:3001/api
-
Start MongoDB (if using local instance)
sudo systemctl start mongod sudo systemctl enable mongod # Auto-start on boot
-
Run database migrations
cd backend node scripts/createCreatorProfiles.js # Create profiles for existing users node src/scripts/addIndexes.js # Add database indexes
-
Start development servers
Option 1: Start both (from root)
npm run dev
Option 2: Start individually
# Terminal 1 - Backend cd backend npm run dev # Terminal 2 - Frontend cd frontend npm run dev
-
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:3001
- Health check: http://localhost:3001/health
create4me/
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components (12+ pages)
β β βββ context/ # React context (AuthContext)
β β βββ lib/ # API client and utilities
β β βββ App.tsx # Main app component with routing
β β βββ index.css # Tailwind styles
β βββ package.json
β βββ vite.config.ts
β
βββ backend/ # Express backend
β βββ src/
β β βββ models/ # Mongoose schemas (5 models)
β β βββ routes/ # API routes (7 route files)
β β βββ middleware/ # Auth and validation middleware
β β βββ services/ # Business logic services
β β βββ config/ # Database and app configuration
β β βββ scripts/ # Migration and utility scripts
β β βββ server.ts # Express server setup
β βββ package.json
β
βββ package.json # Root package (workspaces)
βββ start-dev.sh # Development startup script
βββ README.md # This file
Root level:
npm run dev # Run both frontend & backend
npm run dev:backend # Backend only
npm run dev:frontend # Frontend only
npm run build # Build both for productionBackend:
npm run dev # Development with hot reload
npm run build # Compile TypeScript
npm run start # Production modeFrontend:
npm run dev # Vite dev server
npm run build # Build for production
npm run preview # Preview production build# Create creator profiles for existing users
node backend/scripts/createCreatorProfiles.js
# Add database indexes for performance
node backend/src/scripts/addIndexes.js- TypeScript: Full type safety across frontend and backend
- ESModules: Modern ES6+ syntax
- Async/Await: No callbacks, promise-based
- Component Structure: Functional components with hooks
-
Connect your repository
vercel
-
Configure build settings
- Build Command:
npm run build:frontend - Output Directory:
frontend/dist - Install Command:
npm install
- Build Command:
-
Set environment variables
VITE_API_URL: Your backend API URL
-
Create new project on Railway
-
Connect repository and set root directory to
backend -
Add environment variables:
PORT,NODE_ENV,DATABASE_URL,JWT_SECRET,FRONTEND_URL
-
Set build command:
- Build:
npm run build - Start:
npm start
- Build:
- Create free cluster at MongoDB Atlas
- Create database user
- Whitelist IP addresses (or use 0.0.0.0/0 for all)
- Get connection string
- Update
DATABASE_URLin environment variables
- Development:
http://localhost:3001/api - Production:
https://your-api-url.com/api
All protected endpoints require a JWT token in the Authorization header:
Authorization: Bearer <your_jwt_token>
Authentication
POST /auth/register- Register new userPOST /auth/login- Login userGET /auth/me- Get current user
Campaigns
GET /campaigns/all- Get all campaignsPOST /campaigns- Create campaign (brands only)GET /campaigns/:id- Get campaign detailsGET /campaigns- Get my campaigns
Creators
GET /creators- List all creatorsGET /creators/:id- Get creator profileGET /creators/profile/me- Get my profilePUT /creators/profile- Update my profile
Applications
POST /applications- Apply to campaignGET /applications/my- My applicationsGET /applications/campaign/:id- Campaign applicantsPATCH /applications/:id- Update application status
File Upload
POST /upload/avatar- Upload profile picturePOST /upload/portfolio- Upload portfolio imagesPOST /upload/campaign- Upload campaign images
Analytics
GET /analytics/dashboard- Dashboard statsGET /analytics/campaign/:id- Campaign analyticsGET /analytics/creator/:id- Creator analytics
Messages
GET /messages/conversations- Get conversationsGET /messages/conversation/:userId- Get messages with userPOST /messages/send- Send messagePATCH /messages/:id/read- Mark message as read
For full API documentation, see API.md (TODO)
# Run tests (coming soon)
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverageWe welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Write TypeScript with proper types
- Follow existing code style
- Add tests for new features
- Update documentation
- Keep commits atomic and well-described
This project is UNLICENSED - all rights reserved.
- Developer: Meareg Teame
- Contact: mearegteame99995555@gmail.com
- Ethiopian creator community
- Open source contributors
- All beta testers
- Email: support@create4me.com
- Issues: GitHub Issues
- Discussions: GitHub Discussions
See improvement_plan.md for the complete roadmap.
Coming Soon:
- Payment integration (Telebirr/Chapa)
- Real-time notifications
- Advanced search with Elasticsearch
- Rating & review system
- Admin panel
- Mobile PWA
- Amharic translation
Built with β€οΈ for the Ethiopian creator economy