TeachBridge is a full-stack web application built using the MERN (MongoDB, Express, React, Node.js) stack. This platform allows users to explore and apply for various educational and professional opportunities such as internships, scholarships, hackathons, competitions, and conferences. The application is designed to help students and young professionals find relevant opportunities to enhance their careers and education.
The TeachBridge project has two main parts:
- Frontend: A React-based application that provides a user-friendly interface for exploring opportunities.
- Backend: A Node.js and Express-based API that handles the business logic, data storage (MongoDB), and user authentication.
The app allows users to:
- View a list of available opportunities (internships, scholarships, etc.).
- Log in to their account.
- Create new opportunities (admin functionality).
- Apply for opportunities directly through the platform.
The application uses JWT authentication to secure the login system and restrict access to certain parts of the application.
TeachBridge
│
├── Backend
│ ├── config
│ │ ├── config.js
│ │ └── db.js
│ ├── controllers
│ │ ├── authController.js
│ │ ├── competitionController.js
│ │ ├── conferenceController.js
│ │ ├── hackathonController.js
│ │ ├── internshipController.js
│ │ └── scholarshipController.js
│ ├── models
│ │ └── Opportunity.js
│ ├── routes
│ │ ├── authRoutes.js
│ │ ├── competitionRoutes.js
│ │ ├── conferenceRoutes.js
│ │ ├── hackathonRoutes.js
│ │ ├── internshipRoutes.js
│ │ └── scholarshipRoutes.js
│ ├── package-lock.json
│ ├── package.json
│ └── server.js
│
├── Frontend
│ ├── public
│ │ └── _redirects
│ ├── src
│ │ ├── api
│ │ │ ├── apiClient.js
│ │ │ └── endpoints.js
│ │ ├── components
│ │ │ ├── AddItemButton.jsx
│ │ │ ├── Footer.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── OpportunityCard.jsx
│ │ │ ├── OpportunityCreateForm.jsx
│ │ │ ├── PageNavigationButton.jsx
│ │ │ └── SearchBar.jsx
│ │ ├── hooks
│ │ │ └── useOpportunities.js
│ │ ├── pages
│ │ │ ├── Content.jsx
│ │ │ ├── Home.jsx
│ │ │ ├── Login.jsx
│ │ │ └── NotFound.jsx
│ │ ├── App.jsx
│ │ ├── Index.css
│ │ └── Index.jsx
│ ├── package-lock.json
│ └── package.json
The TeachBridge project is built using the following technologies:
- MongoDB: NoSQL database used to store user data and opportunities.
- Express: Web application framework for Node.js, used for building the backend API.
- React: JavaScript library for building the user interface (frontend).
- Node.js: JavaScript runtime that powers the backend server.
- JWT (JSON Web Tokens): Used for secure user authentication and authorization.
- TailwindCSS: A utility-first CSS framework for styling the frontend.
- Vite: A modern, fast build tool used for bundling the frontend React application.
- Axios: Promise-based HTTP client for making API requests from the frontend.
- ESLint: Linter for maintaining code quality.
- dotenv: Loads environment variables from a .env file.
We welcome contributions to TeachBridge! If you'd like to help improve the project, feel free to fork the repository and submit a pull request.
- Fork the repository.
- Create a new branch (git checkout -b feature-branch).
- Make your changes and commit them (git commit -am 'Add new feature').
- Push to the branch (git push origin feature-branch).
- Submit a pull request with a description of your changes.
This project is licensed under the MIT License. See the LICENSE file for more details.
- Project Overview: A brief description of what the TeachBridge project is and its purpose.
- Project Structure: A detailed structure of the project's directories and files.
- Tech Stack: Technologies used to build the project (MongoDB, Express, React, etc.).
- API Documentation: Example API routes for authentication and managing opportunities, including request/response formats.
- Contributing: Guidelines for contributing to the project.
- License: Licensing information for the project (MIT License).
This README.md serves as a comprehensive guide for anyone who wants to understand the project, its structure, tech stack, and how to interact with the APIs. You can also add more details as needed based on the features and functionality of your application.