PeerFolio is a platform where users can rate and review professionals based on their experiences working with them as mentors, interviewers, colleagues, etc. Think of it as Glassdoor, but for individual professionals rather than companies.
- User Authentication System: Sign up/login functionality with secure password storage
- Profile Pages: Auto-generated profiles for each person who receives a review
- Review System: Submit detailed reviews with ratings, tags, and relationship context
- Search & Discovery: Find professionals by name or browse top-rated individuals
- Moderation System: Admin panel to approve/reject reviews and handle reports
- Frontend: Next.js, React, TypeScript, Tailwind CSS
- Backend: Next.js API routes, Server Actions
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js
- Form Validation: React Hook Form with Zod
- Node.js 18+
- PostgreSQL database
-
Clone the repository:
git clone https://github.com/yourusername/peerfolio.git cd peerfolio -
Install dependencies:
npm install
-
Set up your environment variables:
- Copy
.env.exampleto.env(or create a new.envfile) - Update the database connection string and authentication secret
- Copy
-
Set up the database:
npx prisma migrate dev --name init
-
(Optional) Seed the database with sample data:
npx prisma db seed
This creates:
- Sample users (including an admin user)
- People profiles
- Reviews with various ratings and tags
- Sample reports
Default admin login:
- Email: admin@example.com
- Password: password123
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser to see the application.
To create an admin user for moderation capabilities:
- Register a regular user through the application
- Connect to your database and update the user's role:
UPDATE "User" SET role = 'ADMIN' WHERE email = 'your-email@example.com';
/src/app: Pages and routes using the App Router/src/components: Reusable UI components/src/lib: Utility functions, validations, and server actions/prisma: Database schema and migrations
- Navigate to the "Write a Review" page
- Enter the LinkedIn URL of the person you want to review
- Provide details about your relationship and experience
- Rate the person and provide a detailed review
- Submit for approval
- Use the search function to find someone by name
- Browse the discover page to see top-rated professionals
- View a person's profile to see all their reviews and ratings
- Access the admin dashboard at
/admin - Review pending submissions
- Handle reported reviews
- Manage users and system settings
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- This project was created for educational purposes
- Inspired by platforms like Glassdoor, LinkedIn, and other review sites