Code Monkey home page Code Monkey logo

justehmadsaeed / timetable-scheduler Goto Github PK

View Code? Open in Web Editor NEW
39.0 2.0 28.0 8.94 MB

⏲ An Activity Scheduling Project of Algorithms Analysis to schedule the timetable for Educational Institutes.

Home Page: https://activity-scheduling.herokuapp.com/

License: MIT License

HTML 1.49% CSS 1.06% JavaScript 97.20% Shell 0.22% Procfile 0.02%
algorithms algorithms-and-data-structures algorithm-challenges algorithms-implemented time-schedule timetable-generator hacktoberfest

timetable-scheduler's Introduction

Activity Scheduing

Timetable Scheduler

license MIT

🎯 Plan of Action

The project deals with specific constraints:

  • There should be no more than one class of teachers at the same time.

  • There should be only one teacher assigned to each class during a lecture.

  • A teacher cannot teach more than one subject to a class.

  • Each subject can be assigned to a class at most one time.

  • Credit hours cannot exceed contact hours.

  • There can be only one lecture of a teacher/ subject in a class per day.

  • The lecture arrangement feature is available to let users decide how multiple lectures of a subject can appear in the timetable.

  • The user can define maximum lectures per day and the working days per week.

🚀 Installation Guidelines

Prerequisite

Make sure you have the following tools, installed on your system.

Fork/ Clone the repository:

Click on the fork button in the top right corner or just click this. Copy the URL from that green code button to clone the project. Open a terminal in your desired directory and run the following command with REPO_URL replaced by the link you just copied:

git clone REPO_URL

Set Project Configurations:

  • Make an account on firebase and fill up the .env variables on the frontend.
  • Also, download serviceAccountKey.json from firebase project and add it in the backend/constants directory.

Open Two Terminals:

  • Set path of the first terminal to the root of the project folder, that would have /CS311S20PID08 at the end of the path. This terminal will operate the frontend of the project.

  • For the second terminal, set its path to the backend folder, located in the root directory, or you can initialize its path from the root directory, which will have the same path as of the first terminal and then you can run the following command to set its path to the backend folder.

cd backend

Install the required npm Packages/ dependencies:

To install the dependencies of both frontend and backend, run the following command in both terminals:

# npm
npm install
# yarn
yarn

Make sure you run the above-mentioned command for both terminals without any errors.

Run the project:

Now assuming that your system has all the dependencies required to run the project, it is now set to run over your system.

Now for the final step, run the following command in both terminals to start the project:

# npm
npm start
# yarn
yarn start

The link for the application will appear in the frontend terminal.

For the next time, you have to follow steps 2 & 4 only.

👨🏻‍💻 Contributing

Make sure you read the contributing guidelines before opening a PR.

📧Contact Us

In case of any query regarding the project installation, feel free to contact:

🔑 License & Conduct

timetable-scheduler's People

Contributors

dependabot[bot] avatar justehmadsaeed avatar mehr-un-nisa avatar shehroz-ameer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

timetable-scheduler's Issues

UI should produce updated results

First, three sections a, b and c were added for making their time tables. The application showed the time tables for all the added sections. After that, section b was deleted from above sections’ list and section a and c were given more subjects to read. The application showed updated (correct) results for section a and c, but the result also contained section b as well, which wasn’t supposed to be shown again. Moreover, gitbash showed desired results (only a and c).

Suggestion of break (s) in between lectures

The algorithm taught by Sir has been successfully implemented in this project, but this type of scheduling should not be enforced in real life scenarios (in colleges, unis etc.) because it arranges back to back classes of students and then frees them for the rest of the day. In actual time tables, there are breaks in between the lectures.

Suggestion on the improvement of project (2)

If moderator wants any working day(s) i.e. mon-fri to be get free, the system should not assign classes on that working day. For example, consider a scenario in which moderator wants students of semester 8 to take classes only on Wednesday and Thursday.

Suggestion on the improvement of project (3)

If contact hours are 10, for example, but moderator is assigning 9 periods of lectures to the class, there must be error message saying 1 hour is missing of --- subject. It must be assigned first.

printing of error message should be user friendly

the printing of error message (on some input) should be written more user friendly. For example, the purposed algorithm assumes that “credit hours can’t exceed the contact hours”. Instead showing the very message, it t shows “Credits hrs must !> contact hrs” (message) on wrong input. It is just a suggestion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.