{"id":25317663,"url":"https://github.com/akashsaha02/sprintspace-client","last_synced_at":"2026-04-01T20:20:40.883Z","repository":{"id":271806070,"uuid":"914602082","full_name":"akashsaha02/sprintspace-client","owner":"akashsaha02","description":"SprintSpace is a full-stack web application that connects runners and campaign creators with opportunities to engage, donate, and participate in events.","archived":false,"fork":false,"pushed_at":"2025-02-25T15:30:47.000Z","size":9428,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-28T00:11:55.362Z","etag":null,"topics":["expressjs","firebase","jwt-authentication","mongo","nodejs","reactjs","tailwindcss"],"latest_commit_sha":null,"homepage":"https://sprint-space.web.app/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akashsaha02.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-09T23:20:53.000Z","updated_at":"2025-02-25T15:40:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"42dc28a2-7ba0-4d20-88f2-c23934f77df6","html_url":"https://github.com/akashsaha02/sprintspace-client","commit_stats":null,"previous_names":["akashsaha02/sprintspace-client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akashsaha02/sprintspace-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akashsaha02%2Fsprintspace-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akashsaha02%2Fsprintspace-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akashsaha02%2Fsprintspace-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akashsaha02%2Fsprintspace-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akashsaha02","download_url":"https://codeload.github.com/akashsaha02/sprintspace-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akashsaha02%2Fsprintspace-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expressjs","firebase","jwt-authentication","mongo","nodejs","reactjs","tailwindcss"],"created_at":"2025-02-13T19:39:57.565Z","updated_at":"2026-04-01T20:20:40.860Z","avatar_url":"https://github.com/akashsaha02.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# SprintSpace – Marathon Management Platform\n\n![Header](./src/assets/github.png)\n\nSprintSpace is a full-stack web application that connects runners and campaign creators with opportunities to engage, donate, and participate in events. The project is divided into two main parts:\n\n- **Client (Frontend):** Built with React, Vite, Tailwind CSS, and other modern libraries, it provides a responsive UI for browsing marathons, viewing details, registering, and exploring campaigns.  \n- **Server (Backend):** Built with Express, Node.js, and MongoDB, it manages authentication (JWT-based), event management, and registration operations via secure API endpoints.\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Technologies Used](#technologies-used)\n- [Project Structure](#project-structure)\n- [Installation and Setup](#installation-and-setup)\n  - [Client Setup](#client-setup)\n  - [Server Setup](#server-setup)\n- [API Endpoints](#api-endpoints)\n- [Deployment](#deployment)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Features\n\n- **Event \u0026 Marathon Management:**  \n  - Create, update, view, and delete events.  \n  - Browse upcoming marathons along with detailed event cards that include registration dates, distances, and locations.\n  \n- **User Registration \u0026 Authentication:**  \n  - Secure JWT-based authentication for users.  \n  - Seamless registration for events with a modal form and validation.\n\n- **Dynamic Filtering \u0026 Searching:**  \n  - Filter events by type, location, date range, and search term.  \n  - Interactive sorting options for marathon start dates.\n\n- **Rich User Experience:**  \n  - Responsive design with interactive animations (powered by Lottie and Typewriter effects).  \n  - Integrated blog section to inspire and motivate the community.\n\n---\n\n## Technologies Used\n\n**Frontend (Client):**\n- React, React Router, and React Context API  \n- Vite, Tailwind CSS, DaisyUI  \n- Axios for API communication  \n- Lottie and react-simple-typewriter for animations  \n- ESLint for code quality\n\n**Backend (Server):**\n- Express.js, Node.js, and MongoDB  \n- JWT for authentication and user session management  \n- dotenv for environment variable configuration  \n- cors and cookie-parser for secure cross-origin requests\n\n---\n\n## Project Structure\n\n**Client (akashsaha02-sprintspace-client):**\n\n```\nakashsaha02-sprintspace-client/\n├── public/\n│   └── blogs.json\n├── src/\n│   ├── assets/                # Lottie animations and static assets\n│   ├── components/            # UI components (Events, Event Cards, Home, etc.)\n│   ├── firebase/              # Firebase configuration for hosting\n│   ├── hooks/                 # Custom React hooks (e.g., useEvents)\n│   ├── pages/                 # Route-based page components (HomePage, LoginPage, etc.)\n│   ├── providers/             # Context providers (e.g., AuthProvider)\n│   └── routes/                # Protected routes (PrivateRoute)\n├── index.html\n├── package.json\n├── tailwind.config.js\n├── vite.config.js\n└── .firebaserc\n```\n\n**Server (b10a11-server-side-akashsaha02):**\n\n```\nb10a11-server-side-akashsaha02/\n├── index.js                 # Main Express server for events and registrations\n├── newIndex.js              # Alternative entry point for API (if needed)\n├── package.json\n└── vercel.json              # Vercel deployment configuration\n```\n\n---\n\n## Installation and Setup\n\n### Client Setup\n\n1. **Clone the Repository**  \n   Navigate to the client directory:  \n   ```\n   git clone https://github.com/akashsaha02/sprintspace-client \n   cd sprintspace-client\n   ```\n\n2. **Install Dependencies**  \n   Run:  \n   ```\n   npm install\n   ```\n\n3. **Configure Environment Variables**  \n   Create a `.env` file and add the following key:\n   ```\n   VITE_API_BASE_URL=\u003cyour-backend-api-url\u003e\n   ```\n\n4. **Run the Development Server**  \n   Start the development server with:  \n   ```\n   npm run dev\n   ```\n\n### Server Setup\n\n1. **Clone the Repository**  \n   Navigate to the server directory:  \n   ```\n   git clone https://github.com/akashsaha02/sprintspace-server\n   cd sprintspace-server\n   ```\n\n2. **Install Dependencies**  \n   Run:  \n   ```\n   npm install\n   ```\n\n3. **Configure Environment Variables**  \n   Create a `.env` file and configure the following variables:\n   - `MONGODB_URI` – MongoDB connection string  \n   - `JWT_SECRET` – Secret for signing JWT tokens  \n   - Optionally, set `NODE_ENV=production` for production deployment.\n\n4. **Run the Server**  \n   For development, start the server with:  \n   ```\n   npm start\n   ```\n   The server typically runs on port 3008, unless specified otherwise in your environment.\n\n---\n\n## API Endpoints\n\n### Authentication\n- **POST /jwt**  \n  Generate a JWT token for a given user and set it as an HTTP-only cookie.\n\n- **POST /logout**  \n  Clear the authentication token.\n\n### Events\n- **GET /events**  \n  Retrieve events; optionally filtered by the creator's email.\n\n- **GET /events/details/:id**  \n  Retrieve detailed information for a specific event.\n\n- **POST /events** *(Protected)*  \n  Create a new event (user must be authenticated).\n\n- **PUT /events/:id** *(Protected)*  \n  Update an existing event (authorized access required).\n\n- **DELETE /events/:id** *(Protected)*  \n  Delete an event (authorized access required).\n\n- **GET /running-events**  \n  Retrieve upcoming marathons with limit and random selection options.\n\n### Registrations\n- **GET /registrations** *(Protected)*  \n  Retrieve event registrations for a user, with optional search by event title.\n\n- **POST /registrations** *(Protected)*  \n  Add a new registration and increment the event's registration count.\n\n- **PUT /registrations/:id** *(Protected)*  \n  Update an existing registration.\n\n- **DELETE /registrations/:id** *(Protected)*  \n  Delete a registration and decrement the associated event’s registration count.\n\n---\n\n## Deployment\n\n- **Client:**  \n  Typically deployed using Firebase Hosting (see `firebase.json` and `.firebaserc`).\n\n- **Server:**  \n  Can be deployed on platforms like Vercel using the provided `vercel.json` configuration.\n\n---\n\n## Contributing\n\nContributions are welcome! To contribute:  \n- Fork the repository  \n- Create a new branch with your feature or bug fix  \n- Open a pull request detailing your changes and improvements  \n- For major changes, please open an issue first to discuss the enhancements\n\n---\n\n## License\n\nThis project is licensed under the MIT License.\n\n---\n\nSprintSpace combines a powerful frontend with a robust backend to deliver an engaging user experience for marathon enthusiasts and campaign supporters alike. Enjoy contributing and exploring this dynamic platform!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakashsaha02%2Fsprintspace-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakashsaha02%2Fsprintspace-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakashsaha02%2Fsprintspace-client/lists"}