/ACME-Education

Portfolio Project (MVP) for the foundation

Primary LanguageHTML

ACME-Education

A web application made with teachers' and students' hard educational life in mind.

This application enables students and teachers to coonect with each other, helps teachers share their material with their students in a more profissional and distraction free environment, provide for a chatting place with the teacher so they can be heard and slim the chances of the teacher missing a student note, cares to those in need for knowledage but are not a part of any educational establishment.

Screenshots

App Screenshot App Screenshot App Screenshot App Screenshot

Used By

This project is made for:

  • Teachers.
  • Students.
  • Scholars.

Contributing

  • DRIHMIA Redouane - Database, ORM and API.
  • Mohammed Omer - API, API tests and documentation for the API.
  • Ubonisrael Amos Akpanudoh - Front end and code reviewing.

Environment Variables

To run this project, you will need to add the following environment variables to your .env file

  SECRET_KEY='defined by user'
  JWT_SECRET_KEY='defined by user'
  ACME_EMAIL='to send verification email'
  FRONT_END_ROUTER="127.0.0.1:3000"
  BACK_END_ROUTER="127.0.0.1:5000"
  p='database password'
  u='database user'
  h='ip address of database'
  D='ACME'

Tech Stack

Front end: React and Nextjs

Back end: Python3 and SQL

Framework: Flask

Installation

Install dependancies

  sudo apt update
  sudo apt install mysql-server
  sudo apt-get install python3-dev
  sudo apt-get install libmysqlclient-dev
  sudo apt-get install zlib1g-dev
  sudo pip3 install mysqlclient
  sudo pip3 install SQLAlchemy
  sudo apt-get install -y python3-lxml
  sudo pip3 install Flask
  sudo pip3 install flask_cors
  sudo pip3 install flasgger
  sudo pip3 install pytest
  sudo pip3 install yagmail
  sudo pip3 install flask_jwt_extende
  npm install

Run the fornt end

  • To run the front-end server on development mode
      cd ACME-Education/acme-education-frontend
      npm run dev
  • To run the build
      cd ACME-Education/acme-education-frontend
      npm run build
  • To run the front-end server on production mode:
      cd ACME-Education/acme-education-frontend
      npm run start

Run the back end

  • Starting the database, populate it and run the back end
      cd ACME-Education
      ./pop.bash
  • starting the API
      cd ACME-Education
      python3 -m api.v1.app

API Reference

You can find the API documentation by following this link or see a less cooler version by navigating to /docs in the repo and see the MD file.

Running Tests

The test are devided according to the HTTP methods. This way we get the advantage of isolating different casses for each endpoint. This also give the advantages of having the ability to test for a specific HTTP method without having to look for a specific case in a rather long file.

To run tests dedicated for the API, move into the folder containting the method you would like to test.

  • Run all the test casses for all endpoints
      pytest -v
  • Run all the test casses for a specific endpoint
      pytest -v test_{endpoint name}.py
  • Run aspecific test casse for an endpoint
      pytest -v test_{endpoint name}.py::{test case name from instide the file}

Authors

License

MIT