A modern portfolio platform for creative professionals to showcase their work with stunning, customizable portfolios and detailed case studies.
- 3 Built-in Themes: Default, Modern, and Creative
- Dark Mode Support: Complete dark/light mode toggle
- Real-time Preview: See changes instantly
- OKLCH Color Space: Advanced color management
- Responsive Design: Perfect on all devices
- Modular Case Studies: Comprehensive project documentation
- Media Galleries: Images, videos, and interactive content
- Timeline Editor: Project development phases
- Technology Tags: Showcase your tech stack
- Outcomes Tracking: Metrics and testimonials
- Traffic Insights: Portfolio and project views
- Engagement Metrics: User interaction tracking
- Performance Data: Detailed analytics charts
- Export Capabilities: Data visualization and reports
- Custom URLs:
yourname.projectshelf.com - SEO Optimized: Built-in search engine optimization
- Fast Performance: Optimized builds and caching
- TypeScript: Full type safety
- Modern Stack: Next.js 15, React 18, Tailwind CSS 4
- Node.js 18+
- npm or yarn
- Git
-
Clone the repository
git clone https://github.com/yourusername/projectshelf.git cd projectshelf -
Install dependencies
# Install frontend dependencies cd frontend npm install # Install backend dependencies cd ../backend npm install
-
Environment Setup
# Frontend (.env.local) cd frontend cp .env.example .env.local # Backend (.env) cd ../backend cp .env.example .env
-
Start Development Servers
# Terminal 1 - Backend cd backend npm run dev # Terminal 2 - Frontend cd frontend npm run dev
-
Open your browser
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
projectshelf/
βββ frontend/ # Next.js frontend application
β βββ src/
β β βββ app/ # App router pages
β β βββ components/ # Reusable UI components
β β βββ context/ # React contexts (Auth, Theme)
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utility functions
β β βββ styles/ # Global styles
β βββ public/ # Static assets
β βββ package.json
βββ backend/ # Express.js backend API
β βββ src/
β β βββ routes/ # API route handlers
β β βββ middleware/ # Express middleware
β β βββ models/ # Data models
β β βββ utils/ # Utility functions
β βββ package.json
βββ README.md
βββ .gitignore
cd frontend
# Development
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Run TypeScript checkscd backend
# Development
npm run dev # Start development server with nodemon
npm run build # Build for production
npm run start # Start production server
npm test # Run testsThe theme engine supports custom themes with OKLCH color space:
// Example custom theme
const customTheme = {
name: 'Custom',
description: 'Your custom theme',
primary: 'oklch(0.7 0.2 180)', // Cyan
secondary: 'oklch(0.3 0 0)', // Dark gray
accent: 'oklch(0.8 0.15 60)', // Yellow
background: 'oklch(0.98 0 0)', // Light
foreground: 'oklch(0.1 0 0)', // Dark
// ... other colors
};Frontend (.env.local)
NEXT_PUBLIC_APP_URL=http://localhost:3001Backend (.env)
PORT=5000
NODE_ENV=development
DATABASE_URL=your_database_url
JWT_SECRET=your_jwt_secretcd frontend
npm run build
# Deploy to Vercelcd backend
npm run build
# Deploy to your preferred platform# Build and run with Docker Compose
docker-compose up --build# Frontend tests
cd frontend
npm run test
# Backend tests
cd backend
npm run test
# E2E tests
npm run test:e2ePOST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/logout- User logout
GET /api/portfolios/:username- Get user portfolioPUT /api/portfolios/:id- Update portfolioDELETE /api/portfolios/:id- Delete portfolio
GET /api/projects- List projectsPOST /api/projects- Create projectPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
GET /api/analytics/portfolio/:id- Portfolio analyticsGET /api/analytics/project/:id- Project analytics
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use Tailwind CSS for styling
- Write tests for new features
- Follow the existing code style
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - React framework
- Tailwind CSS - Utility-first CSS
- Lucide Icons - Beautiful icons
- Shadcn/ui - UI components
- OKLCH Color Space - Advanced color management
- π§ Email: support@projectshelf.com
- π¬ Discord: Join our community
- π Documentation: docs.projectshelf.com
- π Issues: GitHub Issues
Built with β€οΈ by the ProjectShelf team