{"id":15129900,"url":"https://github.com/cosc349/rental","last_synced_at":"2026-01-20T02:13:42.447Z","repository":{"id":255982263,"uuid":"853623533","full_name":"cosc349/rental","owner":"cosc349","description":"A full-stack web application for managing shared living expenses which can be deployed using virtualisation.","archived":false,"fork":false,"pushed_at":"2024-09-09T09:17:56.000Z","size":2190,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T17:14:10.030Z","etag":null,"topics":["docker","docker-compose","express-js","html-css-javascript","node-js","sql"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"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/cosc349.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":"2024-09-07T04:09:47.000Z","updated_at":"2024-09-11T02:16:49.000Z","dependencies_parsed_at":"2024-10-31T11:15:36.468Z","dependency_job_id":null,"html_url":"https://github.com/cosc349/rental","commit_stats":null,"previous_names":["cosc349/rental"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosc349%2Frental","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosc349%2Frental/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosc349%2Frental/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosc349%2Frental/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cosc349","download_url":"https://codeload.github.com/cosc349/rental/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247386917,"owners_count":20930734,"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":["docker","docker-compose","express-js","html-css-javascript","node-js","sql"],"created_at":"2024-09-26T02:23:02.607Z","updated_at":"2026-01-20T02:13:42.420Z","avatar_url":"https://github.com/cosc349.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# COSC349 Assignment 1: Virtualisation - Flat Bills Tracker \u003c!-- omit in toc! --\u003e\n\nA web application for managing bills and payments in shared living situations, built with a focus on portable deployment through virtualization. This project allows tenants to track their bills and property managers to oversee multiple properties and assign bills to tenants. By leveraging containerization technology, the Flat Bills Tracker ensures consistent performance across various computing environments. \n\nDeveloped by Anthony Dong (2169260) and Callum Sullivan.\n\n# Video Link\nhttps://youtu.be/v3k8u4zUV0M\n\n## Table of Contents \u003c!-- omit in toc --\u003e\n- [Features](#features)\n- [Technology Stack](#technology-stack)\n- [Project Structure](#project-structure)\n- [Setup and Installation](#setup-and-installation)\n- [Usage](#usage)\n  - [For Tenants:](#for-tenants)\n  - [For Property Managers:](#for-property-managers)\n- [Development](#development)\n  - [Database Modifications:](#database-modifications)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact](#contact)\n\n## Features\n- User authentication through email and password with session management\n- Tenant features:\n  - Sign up and assign themselves to a property\n  - View and edit personal details\n  - View property details including the landlords contacts\n  - Add and track personal bills\n  - View all bills associated with their property\n  - View and change to different properties\n- Property manager features:\n  - Sign up under a company\n  - View and edit personal details\n  - Add a new property to the database\n  - Overview and manage multiple properties\n    - Remove tenants from a property\n    - Assigning bills to individual tenants or entire properties\n\n## Technology Stack\n\n- Frontend: HTML, CSS, EJS templates\n- Backend: Node.js with Express.js\n- Database: MySQL\n- Containerization: Docker and Docker Compose\n- Version Control: Git\n\n## Project Structure\n\nThe project is organized into three main components:\n\n1. Tenant Service: Handles tenant-related functionalities\n2. Manager Service: Manages property manager functionalities\n3. Database Service: MySQL database for data storage\n\nEach service runs in its own Docker container, ensuring isolation and easy deployment. The tenant and manager services communicate with each other via the database service. Both services access the database using Express, with API endpoints handling the HTTP requests.\n\n## Setup and Installation\n\n1. Clone the repository:\n   ```\n   git clone \u003crepository-url\u003e\n   cd rental\n   ```\n\n2. Ensure Docker and Docker Compose are installed on your system.\n\n3. Build and start the containers:\n   ```\n   docker-compose up --build\n   ```\n   Or on some systems:\n   ```\n   docker compose up build\n   ```\n\n4. The application will be available at:\n   - Tenant Portal: http://localhost:3000\n   - Manager Portal: http://localhost:3001\n\n## Usage\n\n### For Tenants:\n1. Navigate to http://localhost:3000\n2. Register a new account or log in\n3. Select your property\n4. Add and manage your bills\n\n### For Property Managers:\n1. Navigate to http://localhost:3001\n2. Register a new account or log in\n3. Add properties and manage tenants\n4. Assign bills to properties or individual tenants\n\n## Development\n\nTo modify the application:\n\n1. Make changes to the relevant files in the `tenant` or `manager` directories.\n2. Rebuild the Docker containers:\n   ```\n   docker-compose down -v\n   docker-compose up --build\n   ```\n    Or on some systems:\n\n    ```\n    docker compose down -v\n    docker compose up --build\n    ```\n    \n    If a user wishes to maintain the state of the system:\n    ```\n    docker-compose down\n    docker-compose up --build\n    ```\n\n### Database Modifications:\n- Update the schema in `schema.sql`\n- Modify the `data.sql` file for any changes to the initial test data\n- Run the following command from a terminal in the project directory to access the database for debugging purposes:\n  ```\n  docker-compose exec db mysql -u root -p\n  ```\n    Enter the password `rootpassword` when prompted.\n\n- To view the database tables, run:\n- `use DB;` to select the database\n- `show tables;` to list all tables\n- `SELECT * FROM \u003ctable-name\u003e` to list the details of the table-name\n\n## Contributing\n\nWe welcome contributions to improve the Flat Bills Tracker. Please follow these steps:\n\n1. Fork the repository\n2. Create a new branch for your feature\n3. Commit your changes\n4. Push to your branch\n5. Create a new Pull Request\n\n## License\n\nThis project is licensed under the MIT License.\n\n---\n## Contact\n\nFor any questions or support, please contact the project maintainers:\n- [Anthony Dong](https://github.com/anthonyzhdong)\n- [Callum Sullivan](https://github.com/SullyJR)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosc349%2Frental","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcosc349%2Frental","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosc349%2Frental/lists"}