NexusEd is an open-source project designed to revolutionize online technical education. Built with FastAPI for blazing speed and scalability, this platform leverages state-of-the-art AI APIs (like Gemini and OpenAI) to dynamically generate, structure, and deliver high-quality, up-to-date programming courses.
- AI-Powered Content Generation: Automatically creates course materials, from outlines to in-depth lessons, using advanced AI.
- Dynamic & Up-to-Date: Courses are always current with the latest trends and technologies in the programming world.
- Scalable Architecture: Built on FastAPI, ensuring high performance and the ability to handle a growing user base.
- Open Source: A community-driven project where anyone can contribute and help shape the future of online education.
This section will guide you on how to get a local copy up and running for development and testing purposes.
python3 --version
sudo apt install python3-pip
sudo apt install python3.12-venv
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install alembic uvicornTo create a new database migration, use the following command:
alembic revision --autogenerate -m "Your migration message"To apply the migrations to the database, use:
alembic upgrade headTo start the development server, run:
uvicorn app.main:app --reload --port 8008 --host 0.0.0.0The application uses Celery to handle background tasks, such as generating course roadmaps and lesson content. To start the worker, run the following command from the project root directory:
celery -A app.worker.celery_app.celery_app worker --loglevel=infoThis command starts a worker process that will listen for and execute tasks from the message queue (RabbitMQ).
For development and testing, you might want to trigger tasks manually. You can do this from a Python shell or a script.
Example: Triggering create_roadmap_task
from app.worker.tasks.create_roadmap import create_roadmap_task
# Replace 123 with the actual course_id
create_roadmap_task.delay(course_id=123)Example: Triggering create_lesson_content_task
from app.worker.tasks.create_lesson import create_lesson_content_task
# Replace 456 with the actual lesson_id
create_lesson_content_task.delay(lesson_id=456)To format the code, run the following script:
./format.shThis project includes detailed documentation for its various components:
- get_courses
- delete_course
- update_course
- generate-roadmap
- get_course_detail
- compile_lesson_content
- generate_lesson_content
- generate_lesson_summary
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
Please refer to our contributing guidelines for more information. (Coming soon)
This project is licensed under the MIT License.
