An AI web app that empowers students study smarter by turning raw materials (notes, images, and video links) into summarized, interactive, and multimedia study content
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Athena is a webapp that enables students to upload notes, images, share links to videos. Athena will summarize the notes, create study guides, create quizzes and generate videos based on their notes. These videos will be snippets of YouTube videos that are relevant.
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
Before you begin, ensure you have the following installed on your machine:
-
Node.js and npm
Install Node.js, which includes npm (Node Package Manager). You can download it from Node.js official website. -
Python
Install Python (version 3.7 or higher). You can download it from Python's official website.
Verify the installation by running:
python --versionInstall pip, the Python package manager, if it is not already installed:
python -m ensurepip --upgrade- Terraform
Install Terraform by following these steps:
- Download the appropriate package for your operating system from the Terraform downloads page.
- Unzip the package and move the binary to a directory included in your system's PATH.
- Verify the installation by running:
terraform --version
- Docker
Install Docker to run containerized applications. You can download it from Docker's official website.
Verify the installation by running:
docker --versionEnsure Docker is running and you have the necessary permissions to execute Docker commands.
- Google Cloud Platform (GCP) Account
- Register for a GCP account at Google Cloud Console.
- Create a new project in the GCP Console.
- Enable the necessary APIs (e.g., Cloud Storage, Compute Engine, etc.).
- Download a service account key in JSON format and set the
GOOGLE_APPLICATION_CREDENTIALSenvironment variable:export GOOGLE_APPLICATION_CREDENTIALS="path/to/your-service-account-key.json"
Follow these steps to set up the project locally:
git clone https://github.com/KCui0327/Athena.git
cd AthenaNavigate to the src/backend directory and set up a virtual environment:
- Create a Virtual Environment
Run the following command to create a virtual environment:
python -m venv venvActivate the virtual environment:
- On macOS/Linux:
source venv/bin/activate - On Windows:
venv\Scripts\activate
- Install Dependencies
Install the required Python packages:
pip install -r requirements.txt- Create a
.envFile
Create a.envfile in thesrc/backenddirectory to store secrets for GCP and databases. Add the following variables:
GOOGLE_APPLICATION_CREDENTIALS=path/to/your-service-account-key.json
DATABASE_URL=your-database-connection-stringReplace path/to/your-service-account-key.json and your-database-connection-string with the appropriate values.
- Run the Backend
At the project root directory, start the FastAPI development server:
fastapi dev src/backend/main.pyNavigate to the src/frontend directory, install the dependencies, and run the program:
cd ../frontend
npm install
npm run devFrom the root project directory, run the following commands:
- Initialize Terraform
This command initializes the Terraform working directory by downloading the necessary provider plugins and preparing the environment:
terraform init- Plan the Deployment
This command creates an execution plan, showing what actions Terraform will take to achieve the desired state:
terraform plan- Apply the Configuration
This command applies the changes required to reach the desired state of the configuration:
terraform apply- Upload notes, images, and video links.
- Summarize notes into concise study guides.
- Generate quizzes based on uploaded content.
- Create multimedia study materials, including video snippets from YouTube.
- Scalable infrastructure using Terraform and GCP.
- Containerized deployment with Docker.
- Add support for additional file formats (e.g., PDFs, Word documents).
- Integrate with more cloud providers (e.g., AWS, Azure).
- Implement advanced AI models for personalized study recommendations.
- Add collaborative features for group study sessions.
- Enhance accessibility features for visually impaired users.
To ensure the project works as expected, follow these steps to run tests:
-
Backend Tests
Navigate to thesrc/backenddirectory and run:pytest
-
Frontend Tests
Navigate to thesrc/frontenddirectory and run:npm test -
End-to-End Tests
Use a testing framework like Cypress for end-to-end testing. Install Cypress and run:npx cypress open
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the project_license. See LICENSE.txt for more information.
- Kenny C - KCui0327
- Ambrose L - janesmitambroselingh
- Simon L - simonlouis15
- Liza A - L-Abraham
- React.js - A JavaScript library for building user interfaces.
- TypeScript - A strongly typed programming language that builds on JavaScript.
- JavaScript - A versatile programming language for web development.
- Tailwind CSS - A utility-first CSS framework for styling.
- Docker - A platform for developing, shipping, and running applications in containers.
- Terraform - An infrastructure as code tool for building and managing cloud resources.
- Google Cloud Platform (GCP) - A suite of cloud computing services.
- Python - A high-level programming language for general-purpose programming.
- Large Language Models (LLMs) - AI models that assist in generating code and improving development efficiency.
- Gemini - A cutting-edge AI model that enhances the project's capabilities through advanced natural language understanding.
Acknowledgments: This project leverages the above technologies to deliver a robust and scalable solution. Special thanks to the open-source community for maintaining these tools and frameworks, and to advancements in AI, particularly LLMs and Gemini, for enhancing our coding process.
