A platform for developers to showcase their open source contributions.
Features • Tech Stack • Getting Started • Environment Variables • Screenshots • API Routes • Contributing • License
🌟 Share Your Contributions - Showcase your open source contributions with the community
🔍 Discover Others' Work - Browse contributions from other developers
📊 GitHub Integration - Connect with GitHub to display your contribution statistics
👥 Community Recognition - Get feedback and recognition for your open source work
🏷️ Categorization - Organize contributions by difficulty, type, and skills
⚡ Modern Tech Stack - Built with Next.js, Prisma, and PostgreSQL
- Frontend: Next.js with TypeScript, Tailwind CSS, and ShadCN UI
- Backend: Next.js API routes
- Database: PostgreSQL with Prisma ORM
- Authentication: GitHub OAuth
- Deployment: Vercel
- CI/CD: GitHub Actions
- Node.js (v20+)
- npm or yarn
- PostgreSQL database
-
Clone the repository:
git clone https://github.com/yourusername/github-showcase.git cd github-showcase -
Install dependencies:
npm install
-
Set up your environment variables (see Environment Variables)
-
Set up the database:
npx prisma generate npx prisma db push
-
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
Create a .env file with the following variables:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/github_showcase"
# GitHub OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
# Next Auth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret
# GitHub API
GITHUB_TOKEN=your_github_personal_access_token
Dashboard view showing recent contributions
User profile with GitHub activity visualization
Detailed view of a contribution
GET /api/auth/[...nextauth]- NextAuth authentication routes
GET /api/contributions- Get all approved contributionsGET /api/contributions/:id- Get a specific contributionPOST /api/contributions- Create a new contributionPUT /api/contributions/:id- Update a contributionDELETE /api/contributions/:id- Delete a contribution
GET /api/users/:username- Get user profileGET /api/users/:username/contributions- Get user's contributions
The application uses the following database schema:
model User {
id String @id @default(cuid())
username String @unique
githubId String @unique
createdAt DateTime @default(now())
contributions Contribution[]
}
model Contribution {
id String @id @default(cuid())
user User @relation(fields: [userId], references: [id])
userId String
title String
about String
repoUrl String
prUrl String
company String?
difficulty Difficulty
description String @default("")
status Status @default(PENDING)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
contributionType String
skill String
}
enum Status {
PENDING
APPROVED
REJECTED
}
enum Difficulty {
EASY
MODERATE
HARD
}Contributions are welcome! Please feel free to submit a Pull Request.
- 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 - see the LICENSE file for details.
Made with ❤️ by Vipin