{"id":19527828,"url":"https://github.com/valinet/collabtool","last_synced_at":"2026-05-16T15:02:13.129Z","repository":{"id":204771880,"uuid":"712635348","full_name":"valinet/collabtool","owner":"valinet","description":"Collab Tool","archived":false,"fork":false,"pushed_at":"2023-10-31T21:47:38.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T16:03:21.195Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"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/valinet.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}},"created_at":"2023-10-31T21:43:10.000Z","updated_at":"2023-10-31T21:45:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"6ce8ad58-7c6f-4a19-8e70-a8c90ae0f563","html_url":"https://github.com/valinet/collabtool","commit_stats":null,"previous_names":["valinet/collabtool"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valinet%2Fcollabtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valinet%2Fcollabtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valinet%2Fcollabtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valinet%2Fcollabtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valinet","download_url":"https://codeload.github.com/valinet/collabtool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240779443,"owners_count":19856184,"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":[],"created_at":"2024-11-11T01:16:30.973Z","updated_at":"2026-05-16T15:02:08.083Z","avatar_url":"https://github.com/valinet.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Collab Tool\n\nSimple collaboration app for [Startup Engineering Assignment](https://ocw.cs.pub.ro/courses/se/assignment/01).\n\n### Public endpoint\n\nThe applicaiton is live at http://collabtool.valinet.ro.\n\nMost recent source code is available at https://github.com/valinet/collabtool.\n\n### Details\n\nThe project is split in 2 parts:\n\n* `api` - This is the server/backend/API, which communicates with the database and offers an authenticated endpoint that clients can use to query and manage the database.\n* `client` - This is the web application that runs in the browser. It conencts to the API to query for data, displays the obtained information, and furtheron it utilizes the API to perform management tasks, like editing or deleting entries.\n\n### Points of interest\n\n* I have also implemented basic authentication. Upon opening the application (connect to port 3000 in the browser), you will be asked for credentials. You can use username `student` and password `student`. The server will issue a JWT token that will be stored as a cookie on the client and is valid for 1 hour. Every API call besides `POST /login` has to be authenticated using such a token.\n* In order to ease and speed up the implementation, I have abstractized the boards, list of cards, and cards themselves as the same object with the same properties and stored them in the database. Each object contains an entry with a \"link\" (the id) of another object, if the case, thus allowing relationships like board-card list, card list-card to exist. The rendering is slightly altered depending on whetehr the object is at the top leve or some other object's child, in order to achieve the differentiation between the board list and card list.\n\n### Prerequisites\n\n* Tested on Ubuntu 22.04 LTS with systemd.\n* [nodejs](https://github.com/nodesource/distributions)\n* [mongodb](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/)\n\nAfter installing mongodb, make sure to enable and start the service using `systemctl enable mongod \u0026\u0026 systemctl start mongod`.\n\n### Configure server\n\n```\ncd api\nnpm install\nnpm start\n```\n\nServer now listens on port 3001. To make it permanent, adjust and install the `misc/collabtool_api.service` file in `/etc/systemd/system` and then `systemctl daemon-reload \u0026\u0026 systemctl enable collabtool_api \u0026\u0026 systemctl start collabtool_api`.\n\n### Configure client\n\n```\ncd client\nnpm install --legacy-peer-deps\nnpm run dev\n```\n\nClient now listens on port 3000. To make it permanent, adjust and install the `misc/collabtool_client.service` file in `/etc/systemd/system` and then `systemctl daemon-reload \u0026\u0026 systemctl enable collabtool_client \u0026\u0026 systemctl start collabtool_client`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalinet%2Fcollabtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalinet%2Fcollabtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalinet%2Fcollabtool/lists"}