https://github.com/techysphinx/skillorbit
SkillOrbit is a mobile app for skill sharing and swapping—connect with others to learn or teach languages, instruments, or technical skills.
https://github.com/techysphinx/skillorbit
expressjs mongodb nginx-proxy nodejs prisma-orm react-native react-router reactjs
Last synced: 2 months ago
JSON representation
SkillOrbit is a mobile app for skill sharing and swapping—connect with others to learn or teach languages, instruments, or technical skills.
- Host: GitHub
- URL: https://github.com/techysphinx/skillorbit
- Owner: techySPHINX
- Created: 2025-07-12T03:55:38.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-08-01T19:54:52.000Z (11 months ago)
- Last Synced: 2026-04-12T06:34:45.067Z (2 months ago)
- Topics: expressjs, mongodb, nginx-proxy, nodejs, prisma-orm, react-native, react-router, reactjs
- Language: TypeScript
- Homepage:
- Size: 1.11 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SkillOrbit: A Platform for Skill Swapping and Collaboration

SkillOrbit is a dynamic mobile application designed to connect individuals for skill sharing and swapping. Whether you're looking to learn a new language, master a musical instrument, or pick up a technical skill, SkillOrbit provides a platform to find and connect with others who have the expertise you need and are looking for the skills you possess.
## ✨ Features
* **User Authentication:** Secure user registration and login.
* **Skill Matching:** An intelligent algorithm to match users based on the skills they offer and the skills they seek.
* **Real-time Chat:** In-app messaging for users to communicate and coordinate.
* **User Profiles:** Showcase your skills and what you're looking to learn.
* **Feedback and Ratings:** A system for users to rate and provide feedback on their skill swap experiences.
* **Notifications:** Stay updated on new matches, messages, and other activities.
## 🚀 Tech Stack
### Backend
* **Framework:** [Node.js](https://nodejs.org/) with [Express.js](https://expressjs.com/)
* **Database:** [MongoDB](https://www.mongodb.com/) with [Mongoose](https://mongoosejs.com/)
* **Real-time Communication:** [Socket.IO](https://socket.io/)
* **Authentication:** [JSON Web Tokens (JWT)](https://jwt.io/)
* **Image Uploads:** [Cloudinary](https://cloudinary.com/)
* **Validation:** [Joi](https://joi.dev/)
* **Logging:** [Winston](https://github.com/winstonjs/winston) and [Morgan](https://github.com/expressjs/morgan)
* **Security:** [Helmet](https://helmetjs.github.io/), [CORS](https://github.com/expressjs/cors), [express-rate-limit](https://github.com/nfriedly/express-rate-limit)
* **Language:** [TypeScript](https://www.typescriptlang.org/)
### Mobile (React Native)
* **Framework:** [React Native](https://reactnative.dev/)
* **State Management:** [Redux Toolkit](https://redux-toolkit.js.org/)
* **Navigation:** [React Navigation](https://reactnavigation.org/)
* **API Communication:** [Axios](https://axios-http.com/)
* **Real-time Communication:** [Socket.IO Client](https://socket.io/docs/v4/client-initialization/)
* **Push Notifications:** [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging)
* **Language:** [TypeScript](https://www.typescriptlang.org/)
## 📂 Project Structure
The project is a monorepo with the following structure:
```
skillorbit/
├── backend/ # Node.js/Express.js backend
│ ├── src/
│ └── package.json
├── mobile/ # React Native mobile application
│ ├── src/
│ └── package.json
└── README.md
```
## 🏁 Getting Started
### Prerequisites
* [Node.js](https://nodejs.org/en/download/) (v18 or higher)
* [MongoDB](https://www.mongodb.com/try/download/community)
* [Yarn](https://classic.yarnpkg.com/en/docs/install/) (or npm)
* [React Native CLI](https://reactnative.dev/docs/environment-setup)
### Backend Setup
1. **Navigate to the backend directory:**
```bash
cd backend
```
2. **Install dependencies:**
```bash
npm install
```
3. **Create a `.env` file** by copying `.env.example` and fill in the required environment variables (database connection string, JWT secret, etc.).
4. **Run the development server:**
```bash
npm run dev
```
### Mobile App Setup
1. **Navigate to the mobile directory:**
```bash
cd mobile
```
2. **Install dependencies:**
```bash
npm install
```
3. **For iOS, install pods:**
```bash
cd ios && pod install && cd ..
```
4. **Run the application:**
* **For Android:**
```bash
npm run android
```
* **For iOS:**
```bash
npm run ios
```
## ↔️ API Endpoints
The backend exposes a RESTful API for the mobile application. Key endpoints include:
* `POST /api/auth/register`: Register a new user.
* `POST /api/auth/login`: Log in a user.
* `GET /api/skills`: Get a list of all available skills.
* `POST /api/skills`: Add a new skill.
* `GET /api/swaps`: Get a list of skill swap proposals.
* `POST /api/swaps`: Create a new skill swap proposal.
For a full list of endpoints, please refer to the backend route definitions in `backend/src/routes`.
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a pull request.
1. Fork the repository.
2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
4. Push to the branch (`git push origin feature/AmazingFeature`).
5. Open a pull request.
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.