SkillAgentSearch skills...

Academix

Academix is a scalable online Learning Management System (LMS) built with NestJS. It features course management, user authentication, progress tracking, payment integration. A secure and efficient platform for both educators and learners.

Install / Use

/learn @Hossein-Falah/Academix
About this skill

Quality Score

0/100

Category

Operations

Supported Platforms

Universal

README

Academix

About

Academix API is a backend service designed for managing educational platforms. Built with NestJS, this API provides a robust and scalable solution for handling users, courses, blogs, orders, and payment systems. It follows a modular architecture, ensuring flexibility and easy expansion based on educational needs.


🚀 Key Features

🔒 Authentication & Authorization

  • JWT-based Authentication: Secure login with JSON Web Tokens.
  • Google OAuth Integration: Sign in easily with your Google account.

👤 User Management

  • Register, login, update profiles, and manage email/password changes.
  • Role-based Access Control: Different permissions for students, instructors, and admins.

📚 Course & Content Management

  • Create and manage interactive courses.
  • Organize lessons and chapters with ease.
  • Assign categories to keep content structured.

✍️ Blog System

  • Full CRUD operations for blog posts.
  • User comments with admin moderation for quality control.

🛒 E-commerce & Payment

  • Shopping cart and order management for course purchases.
  • Coupon & Discount System: Flexible pricing strategies.
  • Secure payment processing (integrate with payment gateways, e.g., Stripe or PayPal, via NestJS services).

🧰 Support & Ticketing System

  • Users can create support tickets.
  • Admins can manage and respond efficiently.

💬 Real-time Chat System

  • Live messaging between users and instructors.
  • WebSocket-based: Fast, real-time communication.

🛠️ Technologies

Academix is built using modern, industry-standard technologies to ensure performance, scalability, and maintainability:

  • Framework: NestJS (Node.js framework for building efficient, reliable server-side applications).
  • Language: TypeScript (for type safety and better code maintainability).
  • Real-time Communication: Socket.IO (for real-time chat and notifications).
  • Database: MySQL (managed via TypeORM for ORM and query optimization).
  • Authentication: JSON Web Token (JWT) and Passport.js (for secure and flexible authentication strategies).
  • API Documentation: Swagger (OpenAPI) for interactive and clear API documentation.
  • Cloud Hosting: AWS (for deployment, scaling, and high availability—e.g., EC2, RDS for MySQL, S3 for file storage, if applicable).
  • ORM: TypeORM (for database modeling and migrations).
  • Dependencies: Managed via package.json (install with npm install).

📋 Prerequisites

Before setting up Academix, ensure you have the following installed:

  • Node.js 16+ or higher.
  • npm (Node Package Manager, usually comes with Node.js).
  • MySQL Server (for the database—ensure it’s running locally or on AWS RDS).
  • AWS CLI (for AWS deployment and configuration, if applicable).
  • Git for cloning the repository.
  • Dependencies listed in package.json (install with npm install)

Preview Academix

screen shot


🏃 Installation

Follow these steps to set up Academix locally:

1. Clone the Repository

git clone https://github.com/Hossein-Falah/academix.git
cd academix  

2. Install Dependencies

npm install  

3. Set Up Environment Variables

Create a .env file in the root directory and add your configuration:

# Server Configuration
PORT=3000
BASE_URL=http://localhost:3000

# Database Configuration
DB_PORT=3306
DB_NAME=academix
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
DB_HOST=your_db_host

# Authentication Secrets
ACCESS_TOKEN_SECRET=your_access_token_secret
OTP_TOKEN_SECRET=your_otp_token_secret
EMAIL_TOKEN_SECRET=your_email_token_secret
PHONE_TOKEN_SECRET=your_phone_token_secret
COOKIE_SECRET=your_cookie_secret

# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_CALLBACK_URL=http://localhost:3000/auth/google.redirect

# AWS S3 or Object Storage
S3_BUCKET_NAME=your_s3_bucket_name
S3_ACCESS_KEY=your_s3_access_key
S3_SECRET_KEY=your_s3_secret_key
S3_ENDPOINT=your_s3_endpoint

# Stripe Payment Gateway
STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
STRIPE_SECRET_KEY=your_stripe_secret_key

# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password

# JWT Secret
JWT_SECRET_KEY=your_jwt_secret_key

(Customize based on your MySQL, AWS, and authentication configurations.)

4. Configure MySQL Database

Create a MySQL database named academix_db (or as specified in .env). Run TypeORM migrations to set up the schema:

npx typeorm migration:run  

5. Run the Application

Start the NestJS server in development mode:

npm run start:dev  

6. Access the API

View the Swagger documentation at http://localhost:3000/swagger (or your configured port) to explore and test endpoints.

📖 Usage

Academix provides a rich API for interacting with its features. Here’s how to get started:

Example: Authenticating a User

  • Send a POST request to /auth/user-existence to check if a user exists.
  • Log in with /auth/check-login using JWT or Passport strategies (e.g., Google OAuth).
  • Use the token to access protected routes like /user/profile.

Example: Creating a Course

  • Authenticate as an instructor.
  • Send a POST request to /course with course details (e.g., title, description, category).
  • Manage real-time interactions (e.g., chat) via Socket.IO endpoints.

Refer to the Swagger UI for all available endpoints, request/response schemas, and example payloads.

📝 API Documentation

Academix’s API is fully documented using Swagger (OpenAPI). Access the interactive documentation at:

The Swagger UI includes:

  • All endpoints (e.g., Auth, User, Course, Blog, Payment, etc.).
  • HTTP methods (GET, POST, PUT, DELETE).
  • Request/response schemas for each endpoint, including authentication (JWT/Passport) and real-time features (Socket.IO).

🤝 Contributing

We welcome contributions to enhance Academix! Here’s how you can help:

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature/your-feature.
  3. Make your changes and commit: git commit -m "Add feature: Your description".
  4. Push to your branch: git push origin feature/your-feature.
  5. Open a Pull Request with a detailed description of your changes.

Please follow our CONTRIBUTING.md (create this file if needed) for guidelines.

🌍 Deployment on AWS

To deploy Academix on AWS:

  • Database: Use AWS RDS for MySQL to host your database, ensuring scalability and backups.
  • Backend: Deploy the NestJS app on AWS EC2, Elastic Beanstalk, or Lambda.
  • Real-time Communication: Configure Socket.IO with AWS services (e.g., Elastic Load Balancer or API Gateway for WebSocket support).
  • File Storage: Use AWS S3 for storing course materials, blog images, and other uploads (if Multer is integrated).
  • API Gateway: Optionally, use AWS API Gateway for routing and scaling API requests.
  • Load Balancing & Scaling: Configure AWS ELB and Auto Scaling for high availability.
  • Environment Variables: Securely manage .env variables using AWS Secrets Manager or Parameter Store.

Ensure proper CI/CD pipelines (e.g., using AWS CodePipeline or GitHub Actions) for automated deployments.

📜 License

This project is licensed under the MIT License. See the LICENSE file for details.

📧 Contact

Have questions or suggestions? Get in touch:

  • Email: hosseinfalah2021@gmail.com
  • Email: hosseinfalah.work@gmail.com
  • X: @HosseinFalah10
  • GitHub Issues: Open an issue in this repository for bugs or feature requests.

❤️ Acknowledgments

  • Thanks to the NestJS, TypeScript, Socket.IO, and AWS communities for their incredible tools.
  • Special appreciation for Swagger, TypeORM, Passport, and JWT for enabling secure and efficient development.

Star this repo if you find Academix useful!

View on GitHub
GitHub Stars21
CategoryOperations
Updated3mo ago
Forks1

Languages

TypeScript

Security Score

77/100

Audited on Dec 17, 2025

No findings