Welcome to Nexus, a blog application where users can read, write, and share tech-related blogs. Join squads specific to tech genres like JavaScript, Python, DevOps, and more. Collaborate with like-minded individuals, access premium content, and even book mentorship sessions with industry experts.
- Blog Creation: Users can write and publish blogs within their joined squads.
- Squads: Join genre-specific squads (e.g., JavaScript, Python, DevOps) to share and access blogs.
- Premium Content: Subscribe to access premium blogs and mentorship sessions.
- Mentorship: Premium users can book video call sessions with mentors.
- Mentor Privileges: Mentors can create premium-only squads and blogs.
- Social Interaction: Follow other users, send connection requests, and chat with connected users.
- Real-Time Chat: Chat with your connections in real-time using Socket.IO.
- Secure Payments: Subscription and payments handled securely using Stripe.
- React.js: Frontend library for building user interfaces.
- React Router DOM: For client-side routing.
- Redux: State management for the application.
- TanStack Query: Data fetching and caching.
- React Hook Form: Form handling and validation.
- Zod: Schema validation for forms.
- Shadcn UI: UI component library.
- Tailwind CSS: Utility-first CSS framework for styling.
- Axios: HTTP client for API requests.
- Socket.IO: Real-time chat functionality.
- WebRTC: Video call functionality for mentorship sessions.
- Node.js: JavaScript runtime for the backend.
- Express.js: Web framework for building RESTful APIs.
- MongoDB: NoSQL database for storing application data.
- Mongoose: MongoDB object modeling for Node.js.
- Redis: Caching and session management.
- JWT (JSON Web Tokens): Authentication and authorization.
- Socket.IO: Real-time communication for chat.
- WebRTC: Video call functionality for mentorship sessions.
- Inversify: Dependency injection for clean and modular code.
- Repository Pattern: Architecture for separating business logic and data access.
- Stripe: Payment processing for subscriptions.
- Swagger Docs: API documentation.
- ESLint: Linting for code quality.
- Prettier: Code formatting.
- Vite: Frontend build tool.
The project is divided into two main folders:
- Frontend: Contains the React.js application.
- Backend: Contains the Node.js and Express.js server.
- Node.js: Make sure you have Node.js installed on your machine.
- MongoDB: Ensure MongoDB is installed and running.
- Redis: Install Redis for caching and session management.
- Stripe Account: Create a Stripe account for payment processing.
-
Clone the Repository
git clone https://github.com/ijas9118/Nexus.git cd Nexus -
Set Up the Backend
-
Navigate to the
backendfolder:cd backend -
Install dependencies:
npm install
-
Use the
.env.examplefile to create your.envfile:# Server Configuration PORT=5000 CLIENT_URL=http://localhost:5173 # Database Configuration MONGO_URI=mongodb://localhost:27017/nexus # Authentication Secrets ACCESS_TOKEN_SECRET=your_access_token_secret REFRESH_TOKEN_SECRET=your_refresh_token_secret # Environment Mode NODE_ENV=development # Google OAuth Credentials GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # Email Configuration USER_EMAIL=your_email@example.com APP_PASSWORD=your_email_app_password # Stripe Configuration STRIPE_SECRET_KEY=your_stripe_secret_key
-
Run the backend server:
npm run dev
-
-
Set Up the Frontend
- Navigate to the
frontendfolder:cd ../frontend - Install dependencies:
npm install
- Use the
.env.examplefile to create your.envfile:VITE_API_BASE_URL=http://localhost:3000/api
- Run the frontend application:
npm run dev
- Navigate to the
-
Access the Application
- Open your browser and go to
http://localhost:5173to access the frontend. - The backend API will be running on
http://localhost:3000/api.
- Open your browser and go to
The API is documented using Swagger. After starting the backend server, you can access the API documentation at:
http://localhost:3000/api/docs
- Users can join squads based on their tech interests (e.g., JavaScript, Python, DevOps).
- Blogs can be published within a squad, and only squad members can view and interact with them.
- Premium squads and blogs are accessible only to subscribed users.
- Premium users can book mentorship sessions with mentors.
- Mentors can create premium-only squads and blogs.
- Users can follow others and send connection requests.
- Once a connection request is accepted, users can chat in real-time using Socket.IO.
- Subscriptions and payments are handled securely using Stripe.
Contributions are welcome! If you'd like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Commit your changes and push to the branch.
- Submit a pull request.
- Shadcn UI: For providing beautiful and customizable UI components.
- Tailwind CSS: For making styling a breeze.
- Stripe: For seamless payment integration.
For any questions or feedback, feel free to reach out:
- Email: ahammedijas.official@gmail.com
- GitHub: ijas9118
Enjoy exploring Nexus! ✨