A full-stack personal branding platform built with React and Django REST Framework.
- Homepage - Introduction and highlights with featured projects
- About Me - Background, skills, and story
- Services - List of offerings with pricing
- Portfolio - Showcase projects with filtering by category
- Testimonials - Client feedback and endorsements
- Contact - Inquiry form for potential clients
- Secure JWT authentication
- Dashboard with statistics
- CRUD management for:
- Projects (with image uploads)
- Services
- Testimonials
- Profile information
- Inquiry management system
- Django 4.2
- Django REST Framework
- SimpleJWT for authentication
- PostgreSQL/SQLite
- Pillow for image handling
- React 18
- React Router v6
- Axios for API calls
- TailwindCSS for styling
- Context API for state management
profile/
βββ backend/ # Django backend
β βββ config/ # Django project settings
β βββ accounts/ # User profiles
β βββ portfolio/ # Projects management
β βββ services/ # Services management
β βββ testimonials/ # Testimonials management
β βββ contact/ # Inquiry/contact management
β βββ manage.py
β
βββ frontend/ # React frontend
βββ public/
βββ src/
βββ components/ # Reusable components
βββ pages/ # Page components
βββ services/ # API service layer
βββ context/ # React context
βββ App.js
- Python 3.9+
- Node.js 16+
- npm or yarn
- Navigate to backend directory:
cd backend- Create virtual environment:
python -m venv venv
.\venv\Scripts\Activate.ps1- Install dependencies:
pip install -r requirements.txt- Create
.envfile:
cp .env.example .env-
Update
.envwith your settings (generate a strong SECRET_KEY) -
Run migrations:
python manage.py makemigrations
python manage.py migrate- Create superuser:
python manage.py createsuperuser- Run development server:
python manage.py runserverBackend will be available at: http://localhost:8000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Create
.envfile:
cp .env.example .env- Start development server:
npm startFrontend will be available at: http://localhost:3000
- Visit http://localhost:8000/admin to access Django admin
- Login with your superuser credentials
- Create a Profile entry for your personal information
- Add projects, services, and testimonials
For the React admin panel:
- Visit http://localhost:3000/admin/login
- Login with your superuser credentials
- Manage content through the admin dashboard
POST /api/token/- Obtain JWT tokenPOST /api/token/refresh/- Refresh JWT token
GET /api/accounts/profiles/public/- Get public profile
GET /api/portfolio/projects/- List all projectsGET /api/portfolio/projects/{id}/- Get project detailsGET /api/portfolio/projects/featured/- Get featured projectsPOST /api/portfolio/projects/- Create project (admin only)PUT /api/portfolio/projects/{id}/- Update project (admin only)DELETE /api/portfolio/projects/{id}/- Delete project (admin only)
GET /api/services/- List all servicesPOST /api/services/- Create service (admin only)PUT /api/services/{id}/- Update service (admin only)DELETE /api/services/{id}/- Delete service (admin only)
GET /api/testimonials/- List all testimonialsGET /api/testimonials/featured/- Get featured testimonialsPOST /api/testimonials/- Create testimonial (admin only)PUT /api/testimonials/{id}/- Update testimonial (admin only)DELETE /api/testimonials/{id}/- Delete testimonial (admin only)
POST /api/contact/inquiries/- Submit inquiry (public)GET /api/contact/inquiries/- List inquiries (admin only)PATCH /api/contact/inquiries/{id}/update_status/- Update inquiry status (admin only)
Edit frontend/tailwind.config.js to change the primary color scheme.
- Update your profile through Django admin
- Add projects, services, and testimonials
- Customize page content in React components
- Create a new web service
- Connect your repository
- Set environment variables (SECRET_KEY, DATABASE_URL, etc.)
- Deploy
cd backend
docker build -t brand-hub-backend .
docker run -p 8000:8000 brand-hub-backend- Build the app:
npm run build-
Deploy the
buildfolder to Netlify or Vercel -
Set environment variable:
REACT_APP_API_URL=https://your-backend-url.com/api
- Change SECRET_KEY in production
- Use PostgreSQL for production database
- Enable HTTPS
- Set appropriate CORS_ALLOWED_ORIGINS
- Use strong passwords for admin accounts
- Keep dependencies updated
SECRET_KEY=your-secret-key
DEBUG=False
ALLOWED_HOSTS=yourdomain.com
CORS_ALLOWED_ORIGINS=https://yourdomain.com
DB_NAME=database_name
DB_USER=database_user
DB_PASSWORD=database_password
REACT_APP_API_URL=https://api.yourdomain.com/api
This is a personal project template. Feel free to fork and customize for your own use.
MIT License - feel free to use this for your personal brand!
- Ensure backend CORS_ALLOWED_ORIGINS includes your frontend URL
- Check that django-cors-headers is installed and configured
- Verify JWT tokens are being sent in Authorization header
- Check token expiration settings in backend/config/settings.py
- Ensure MEDIA_URL and MEDIA_ROOT are configured
- Check file upload permissions
For issues and questions, please open an issue in the repository.
Built with β€οΈ using React and Django