{"id":27147221,"url":"https://github.com/hemmouda/bachmek","last_synced_at":"2026-04-30T10:09:03.089Z","repository":{"id":278033077,"uuid":"864808951","full_name":"hemmouda/Bachmek","owner":"hemmouda","description":"A webapp that manages students and the semester evaluation process of a university","archived":false,"fork":false,"pushed_at":"2024-10-04T18:04:41.000Z","size":3159,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T16:43:15.175Z","etag":null,"topics":["deliberation","evaluation","java","jee","management","mysql","semester","uni","university"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hemmouda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-29T08:11:17.000Z","updated_at":"2024-10-04T18:04:44.000Z","dependencies_parsed_at":"2025-02-17T16:43:21.055Z","dependency_job_id":"d30e4e8d-5439-402a-a438-51d6b4f7afc0","html_url":"https://github.com/hemmouda/Bachmek","commit_stats":null,"previous_names":["hemmouda/bachmek"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemmouda%2FBachmek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemmouda%2FBachmek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemmouda%2FBachmek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hemmouda%2FBachmek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hemmouda","download_url":"https://codeload.github.com/hemmouda/Bachmek/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247829493,"owners_count":21002995,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deliberation","evaluation","java","jee","management","mysql","semester","uni","university"],"created_at":"2025-04-08T11:05:43.548Z","updated_at":"2026-04-30T10:08:58.068Z","avatar_url":"https://github.com/hemmouda.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bachmek \u0026nbsp; ![DEVELOPMENT STATUS: finished](https://badgen.net/badge/DEVELOPMENT%20STATUS/finished/green)\n\n## Context\nDuring my 4th semester in 2022 at the Moulay Ismail University in Morocco, each one of the student was tasked with creating a specific JEE web application. I was tasked with creating a webapp that would manage the evaluation / grading process of a university. This webapp was to be complete and handles all the different components that are required for the evaluation process, i.e. students, teachers, administrators, courses, modules, semesters, registrations, marks, etc...\n\nYou can read the specification booklet that was given to me [here](extra/specifications.pdf). However, it is in French.\n\nI was pretty excited to work on this project, as that it represented a **real challenge**. It was a relatively big scale project, and we had to learning about the new technology (JEE) as to adhere to the specifications, all in the duration of around 5 months, while still having other modules to juggle. [This](extra/images/timetable.jpeg) is what our time table looked like that semester.\n\n## Development journey (personal experience)\nI first took some good time reading and understanding the specifications. Then I designed the class diagram of the project, which you can see [here](extra/images/class_diagram.webp). Then I started learning JEE, namely off of this [book](https://www.murach.com/shop/murach-s-java-servlets-and-jsp-3rd-edition-detail). It helped quite a lot as that it was comprehensive. But that alone took me around 2 months, and was yet to write a single line of code. [Here](extra/images/gantt.webp) is the Gantt chart if you want to see how the work ended up being divided, although it is in French again.\n\nSeeing that I was **very** short in time, and that I still literally had the whole project to implement, I started coding like I have never coded in my entire life. I was coding non-stop everyday, from the moment I woke up, until the moment I went to bed. I **hated** it. I was **exhausted** and **tired**. But I wanted it to be done, and I wanted it to be operational and good, and actually usable, and not just presentation-usable. Thankfully, I was able to do so, and really just in the nick of time. I coded and implemented the last component of the webapp the evening before the presentation day. And then pulled an all-nighter to write the report.\n\nI learned quite a bit from this experience, and aside from the new technologies and whatnot, I also learned something very important, which is prioritizing my self and my health, and not neglecting my self and everything for a school project. I learned that I should've said\n\n  \u003e Fuck that shit, if we don't finish it, we don't finish it.\n\nand take a couple of breaks and take care of my self.\n\nNever the less, good experience, would recommend. 👍🏼\n\n## UI / UX snippets\nThe style wasn't a top priority but I didn't want the website to be hideous neither. Worth noting is that I only knew HTML, CSS, and JS at the time, and that I did **everything** my self, no template, no nothing.\nAlso, the bulk of the application was the administrator part, so that's where most of the snippets are from.\n\n### The landing page\n![landing_page](extra/images/landing_page.webp)\nThose little majors icons circled and floated around the logo.\n\n### Student applying\n![applying](extra/images/applying.webp)\nA student can apply to join the program from this page.\n\n### Admin landing page\n![admin_landing_page](extra/images/admin_landing_page.webp)\nWhen an admin logged in, this is what he was presented with. I was proud of the little menu on the side that can be closed. 😊\n\n### Academic years list\n![academic_years](extra/images/academic_years.webp)\nThe admin can manage the academic years from this page.\n\n### Modules list\n![modules_list](extra/images/modules_list.webp)\nThe admin can manage the modules from this page.\n\n### Module elements\n![module_elements](extra/images/module_elements.webp)\nEach module had elements.\n\n### Assessments\n![assessments](extra/images/assessments.webp)\nAnd then each element had assessments, like exams or homework.\n\n### Pedagogical registrations\n![pedagogical_registrations](extra/images/pedagogical_registrations.webp)\nA pedagogical registration is when a student registers to a module.\n\n### Accounts management\n![users](extra/images/users.webp)\nThe admin can manage the different account types from this page.\n\n### Instructors list\n![instructors](extra/images/instructors.webp)\nHe can assign instructors to modules here.\n\n### Approving marks\n![approvement](extra/images/approvement.webp)\nThe admin can approve the marks that the instructors have entered, and thus \"seal\" them so that they can't be modified.\n\n### Marks\n![marks](extra/images/marks.webp)\nHere the admin can download the marks either of a module, a semester, or for the whole year.\n\n![marks_example](extra/images/marks_example.webp)\nHere is an example of the downloaded marks table.\n\n### Student landing page\n![student_landing_page](extra/images/student_landing_page.webp)\nWhen a student logs in, this is what he was presented with.\n\n![student_marks](extra/images/student_marks.webp)\nAnd this is where he could see his marks.\n\nThere are a lot more pages and functionalities, but those are some snippets of the UI / UX.\n\n## How to run\nThe project was originally developed in Eclipse integrated JEE environment, where it handles deployment and everything. But I turned it into a Maven project before uploading it here.\n\n### The database\nThe project obviously requires a database, and a MySql database was used. So to run the project you first need to create a database in your MySql server (just locally). And then run this [script](db_scripts/reset.sql) to create the tables.\n\nAn empty database isn't that useful, so [here](db_scripts/basic_dummy_data.sql) are some simple dummy data that you can insert.\n\nAfter doing that, you also need to configure the persistence unit in this [persistence.xml](src/main/resources/META-INF/persistence.xml) file, so that the application would know which database to use, and with which user to log into it.\n\n### Deploying the project\nOnce the database is ready and the MySql server is running, simply package the project using Maven, and deploy the generated `.war` file to your Servlet container.\n\nYou can package the project by running this command in the project's root directory:\n```bash\nmvn clean package\n```\n\nThat would generate a `.war` file in the `target` directory, which you then deploy to your Servlet container. I tested it with `Apache Tomcat 10.0.17`, but it should work with any other container.\n\n### Dummy data\nIn addition to the basic dummy date available in the [basic_dummy_data.sql](db_scripts/basic_dummy_data.sql) file, there is also a couple more that you can find in this the `db_scripts` directory. As well as some excel dummy data in the `excel_dummy_data` directory.\n\n## Side note\nWhile working on this project, I noticed that I was doing a lot of repetitive tasks, and that many things could be automated and made **a lot** easier when working with JEE. That inspired me to make [Jeext](https://github.com/telos-matter/Jeext). A collection of tools that made working with JEE a bit more barrable.\n\nI originally developed these tools and functionalities in conjunction with this project / inside it. After finishing the project however, I took them out and made them into a separate project, added a lot more functionalities and kept working on it.\n\nBut anyhow, I would not recommend using `Jeext` as that I abandoned the project eventually, and you should use something like [Spring](https://spring.io/) instead.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemmouda%2Fbachmek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhemmouda%2Fbachmek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhemmouda%2Fbachmek/lists"}