Social Paroi is a social sports tracking app designed for users to track and manage their outdoor activity progress. The platform enables users to complete and rank tracks while offering features for competition and leaderboards.
- Users can view tracks, mark them as ToDo or Done.
- Openers can create and edit tracks.
- Users track progress based on difficulty.
- Leaderboard ranks users based on completed tracks.
- Openers can create contests with:
- A set of tracks.
- A list of participants.
- Optional ranking criteria.
- Tracks earn points dynamically: 1000 ÷ (number of users who completed it).
- Admins can post news updates.
- Regular Users: View & complete tracks.
- Openers: Create and manage tracks & contests.
- Admins: Manage users and content.
- Frontend: Next.js 14 (App Router) + Tailwind CSS
- Backend: Next.js API Routes + Prisma ORM
- Database: PostgreSQL (Hosted on Vercel)
- Authentication: Auth.js (Google & GitHub OAuth)
- Storage: Cloudinary (For images)
- Hosting: Vercel
click me
/app
├── api/ # API Routes
│ └── auth/
│ └── [...nextauth]/route.ts
├── contests/ # Contests pages
│ ├── layout.tsx
│ ├── page.tsx
│ └── [contestId]/page.tsx
├── dashboard/ # Main dashboard
│ ├── layout.tsx
│ ├── page.tsx
│ └── track/[trackId]/
│ ├── edit/page.tsx
│ └── page.tsx
├── login/page.tsx
├── news/
│ ├── layout.tsx
│ └── page.tsx
├── opener/
│ ├── create/page.tsx
│ └── layout.tsx
├── ranking/
│ ├── layout.tsx
│ └── page.tsx
├── stats/
│ ├── layout.tsx
│ └── page.tsx
├── privacy/page.tsx
├── layout.tsx # Main app layout
├── page.tsx # Home page
├── favicon.ico
/components
├── activities/ # Activity-related components
├── contests/ # Contest-related components
├── filters/ # Track filtering UI
├── news/ # News-related components
├── tracks/ # Track management components
├── users/ # User-related components (Ranking, Stats)
├── ui/ # Generic UI (buttons, modals, charts)
├── Navbar.tsx # Navigation bar
├── Drawer.tsx # Side drawer
└── Zone.tsx
/middleware
├── auth.ts # Role-based authentication
├── rate-limit.ts # API rate limiting
/services
├── track.service.ts # Track-related logic
├── contest.service.ts # Contest management logic
├── ranking.service.ts # Leaderboard logic
/lib
├── cloudinary/ # Cloudinary helper functions
├── contests/ # Contest-related actions & hooks
├── news/ # News-related actions & hooks
├── stats/ # Stats-related actions & hooks
├── tracks/ # Track-related actions & hooks
├── users/ # User-related actions & hooks
├── prisma.ts # Prisma client setup
├── auth.ts # Auth.js configuration
├── logger.ts # API error logging (to database)
/prisma
├── schema.prisma # Prisma schema
├── migrations/ # Database migrations
/env/ # Environment variables
/.env # Local environment file
/package.json # Project dependencies
/tsconfig.json # TypeScript configuration
/next.config.js # Next.js configuration
/vercel.json (opt.) # Vercel configuration
The complete project documentation is available in the docs/bootstrap directory:
| Document | Description |
|---|---|
| Goals | Project goals and objectives |
| Hosting | Hosting setup and deployment details |
| Backend | Backend structure and API details |
| Frontend | Frontend implementation and UI components |
| Database | Database schema and management |
| Events | Event handling and async processing |
| Security | Security policies and best practices |
| Observability | Logging, monitoring, and debugging |
| Architecture | System architecture overview |
| Next Steps | Future improvements and roadmap |
We welcome contributions from the community to help improve Social Paroi! Here’s how you can get involved:
-
Create an Issue
If you find a bug or have a feature request, please create an issue in our GitHub repository. Provide as much detail as possible to help us understand and address the issue. -
Answer the Feedback Form
Share your thoughts and suggestions by filling out our feedback form. Your feedback is invaluable in helping us improve the app. -
Fork and Create a Pull Request
If you want to contribute code, follow these steps:- Fork the repository to your GitHub account.
- Clone the forked repository to your local machine.
- Create a new branch for your feature or bug fix.
- Make your changes and commit them with clear and descriptive messages.
- Push your changes to your forked repository.
- Open a pull request to the main repository, describing the changes you’ve made and the issue it addresses.
- Before proceeding, please ensure there is no existing issue related to your contribution and confirm its relevance to the project by consulting with the administrator. This will help prevent efforts on contributions that may not be accepted.
We appreciate your contributions and will review pull requests as quickly as possible. Thank you for helping make Social Paroi better!
MIT License
Developed with ❤️ for the climbing community 🚀