{"id":15319568,"url":"https://github.com/erkexzcx/study-workflow-tracking-information-system","last_synced_at":"2025-10-09T05:31:21.811Z","repository":{"id":114563926,"uuid":"223409896","full_name":"erkexzcx/Study-Workflow-Tracking-Information-System","owner":"erkexzcx","description":"My final project in Vilnius College (software engineering)","archived":true,"fork":false,"pushed_at":"2020-01-22T20:00:04.000Z","size":8808,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-27T03:34:02.127Z","etag":null,"topics":["adminlte2","bachelor","bachelor-project","bachelor-thesis","golang","information-systems","tracking"],"latest_commit_sha":null,"homepage":"https://en.eif.viko.lt/","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erkexzcx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-11-22T13:29:31.000Z","updated_at":"2024-08-12T19:55:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"bf302bbc-6b92-42e5-81e2-240ed8cfbc03","html_url":"https://github.com/erkexzcx/Study-Workflow-Tracking-Information-System","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erkexzcx/Study-Workflow-Tracking-Information-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erkexzcx%2FStudy-Workflow-Tracking-Information-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erkexzcx%2FStudy-Workflow-Tracking-Information-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erkexzcx%2FStudy-Workflow-Tracking-Information-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erkexzcx%2FStudy-Workflow-Tracking-Information-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erkexzcx","download_url":"https://codeload.github.com/erkexzcx/Study-Workflow-Tracking-Information-System/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erkexzcx%2FStudy-Workflow-Tracking-Information-System/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000745,"owners_count":26082932,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["adminlte2","bachelor","bachelor-project","bachelor-thesis","golang","information-systems","tracking"],"created_at":"2024-10-01T09:05:12.146Z","updated_at":"2025-10-09T05:31:21.805Z","avatar_url":"https://github.com/erkexzcx.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SWTIS - Study Workflow Tracking Information System\n\nMy final project while studying in VIKO EIF (software engineering).\n\n# Purpose\n\nStudying in sessions (every 6 months: 2x2 weeks study sessions and 1x1 week exams session) is not an easy thing to do when you have a full-time job. Sometimes you just can't attend studies session, therefore you are forced to reach teachers via email (and they sometimes don't reply at all). In addition, other students (from the same group) are dealing with the exact same issue. Struggling with this lack of information, assignments tracking is also a tricky thing (what is done, what is not and what needs to be brought to college on what date etc...), so I decided to create the solution on my own - an information system (web application) for studies tracking, which could also be used for other students from the same group.\n\nThis web application lets users track the following details:\n* Assignments. What needs to be done? Until when? From which subject? Who is the teacher?\n* Progress board for assignments (either it's *Not started*, *In progress*, *Pending* or *Completed*). Everyone's personal board with personal note for each assignment.\n* Subjects. Who is the teacher? What is subject's website and access key?\n* Semesters. Always there 1 and only 1 active semester, so we can easily filter out subjects/assignments by semester, or see only active semester's subjects/assignments.\n* Events (like calendar, but in the list format). Things like National exam date?\n* Links. Like shared gdrive/onedrive link? College website link?\n\nThis application aims to be a \"homepage\" for students group, managed only by the same students. In addition, there are only 2 types of users (aka roles) - regular users who has view-only permissions (they can still manage their personal progress board) and users with full rights to edit everything (except other people's progress board).\n\n# How to use\n## Preparation\n1. Install and start MariaDB server. We will configure user and scheme later.\n\n2. Set-up GO programming language. To ensure it is working, try this command:\n```\n$ go version\ngo version go1.13.5 linux/amd64\n```\nThen install required GO build/run dependencies for this project:\n```\ngo get -u github.com/gin-gonic/gin\ngo get -u github.com/go-sql-driver/mysql\ngo get -u github.com/gin-contrib/sessions\ngo get -u golang.org/x/crypto/bcrypt\n```\n## Installation\n1. Compile source code to binary:\n```\ngit clone https://github.com/erkexzcx/Study-Workflow-Tracking-Information-System\ncd Study-Workflow-Tracking-Information-System\ngo build -o swtis src/*.go\n```\n2. \"Install\" by copying files to OS locations:\n```\nmkdir -p /opt/swtis\ncp -r {static,templates,swtis.conf,swtis} /opt/swtis/\ncp swtis.service /etc/systemd/system/\n```\n3. Set-up database scheme.\n\nFirst, create database `bdarbas` with user `bdarbas` and password `bdarbas`. All these settings can be changed in project's file `swtis.conf`.\n\nThen execute SQL file against database to create scheme:\n```\nmysql -u bdarbas -pbdarbas bdarbas \u003c bdarbas.sql\n```\n## Usage\nThere is basic SystemD script included. Usage as any other SystemD service:\n```\nsystemctl \u003cstart/stop/enable/disable\u003e swtis.service\n```\nThen access running project via browser (username `admin` with password `admin`):\n```\nhttp://\u003caddress\u003e:80\n```\n\n# Issues\n\nThanks to amazing Vilnius College study programme, I **officially** had only **1 month** (I have full-time job as well) to **fully complete** this project (including **fully completed** (72 pages in total) report), so there was not much time to do a research on certain things.\n\nThese are the issues I am aware of and I just did not have time to deal with them:\n\n*Server-side*:\n1. No tests written.\n2. Some repetitive code.\n3. User input validation is almost non-existent (project is protected from SQL injections tho).\n4. SystemD provided service file is a joke, but it works.\n5. `/opt/` should better be replaced with `/etc/`.\n6. I should have used a proper ORM. Like [GORM](https://github.com/jinzhu/gorm).\n7. There are no soft-deletes. ORM could easily solve this for me.\n8. No DB backups implementation.\n9. (Error) logging is also very poor.\n10. Project structure is exactly opposite of [what's recommended](https://github.com/golang-standards/project-layout).\n\n*Client-side*:\n1. Based on AdminLTE2, but AdminLTE3 is already out at the time of writting.\n2. Modals, Datatables and some other code is repetitive (even comments - I copy/paste'd a lot!).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferkexzcx%2Fstudy-workflow-tracking-information-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferkexzcx%2Fstudy-workflow-tracking-information-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferkexzcx%2Fstudy-workflow-tracking-information-system/lists"}