A web application designed to provide free, accessible, and interactive STEM education to students in Kenya, built using React and Flask.
STEMLearn is an online learning platform that bridges the gap in access to quality STEM (Science, Technology, Engineering, and Mathematics) education. It offers structured courses, interactive content, and progress tracking tailored to the Kenyan curriculum. The platform is designed to be free and accessible, ensuring that students from all backgrounds can benefit from high-quality educational resources.
This project demonstrates core React and Flask concepts, including:
- User authentication and role-based access control.
- Course and lesson management.
- Interactive quizzes and assignments.
- Progress tracking and certification.
- Secure user registration and login with email and password.
- JWT-based authentication for secure access control.
- Different user roles: Admin, Teachers, and Students.
- Display available STEM courses categorized by subject (Mathematics, Physics, Chemistry, Biology, Computer Science, Engineering, etc.).
- Search and filter functionality to help students find relevant courses easily.
- Detailed course descriptions, including syllabus, duration, and learning outcomes.
- Allow students to enroll in courses.
- Display a list of lessons and downloadable resources.
- Support for videos, PDFs, interactive quizzes, and assignments.
- Structured lesson-by-lesson progression.
- Discussion section for student-teacher interaction.
- Show enrolled courses with completion percentage.
- Track progress per lesson and module.
- Display achievements and certificates of completion.
- Create and manage courses.
- Add and assign teachers to courses.
- Enroll students into specific courses manually if needed.
- Monitor student activity and progress analytics.
- Upload course materials (videos, notes, quizzes, and assignments).
- Track student progress within assigned courses.
- Provide feedback on assignments and answer student queries.
- Implement quizzes and assignments for students to test their knowledge.
- Issue certificates upon successful completion of a course.
- A computer, tablet, or phone.
- Access to the internet.
- A modern web browser.
Visit the deployed application at: [STEMLearn Live Site](http://superb-duckanoo-18547b.netlify.app/ Resources )
The live site allows you to:
- Browse and enroll in STEM courses.
- Track your progress and achievements.
- Access course materials and interact with teachers.
If you want to run the project locally, you'll need:
- Node.js installed on your computer.
- Python (v3.8 or higher) for the Flask backend.
- Basic understanding of React and Flask.
- Code editor (VS Code recommended).
- Terminal/Command Line.
-
Clone this repository:
git clone https://github.com/your-username/stemlearn.git
-
Navigate to the project directory:
cd stemlearn -
Set up the frontend:
cd stemlern npm install -
Set up the backend:
cd STEMLearn_db pipenv install pipenv shell -
Run the development servers:
-
Start the backend:
python app.py
-
Start the frontend:
npm start
-
-
Open your browser and visit:
http://localhost:3000
- Frontend: React, Tailwind CSS, JavaScript (ES6)
- Backend: Flask, SQLAlchemy, Python
- Database: SQLite (for development)
- Authentication: JWT (JSON Web Tokens)
- Deployment:
- Frontend: Netlify
- Backend: Render
[STEMLearn Live Site](https://stemlearn-db.onrender.com Resources
)
If you want to contribute to the project, please follow these steps:
-
Fork this repository:
- Click the "Fork" button at the top right of this repository to create a copy in your GitHub account.
-
Clone your Fork:
git clone https://github.com/your-username/stemlearn.git cd stemlearn -
Create a new branch:
git switch -c your_branch_name
-
Make your changes:
Add new features, fix bugs, or improve documentation.
-
Add and commit your changes:
git add . git commit -m "Your commit message"
-
Push your changes:
git push origin your_branch_name
-
Create a new pull request:
- Go to the original repository on GitHub.
- Click on "Pull Requests" and then "New Pull Request".
- Select your branch and provide a clear description of your changes.
- Submit the pull request for review.
MIT License © 2024 [Your Name] ([Your GitHub Username])
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
