{"id":15323897,"url":"https://github.com/StudyResearchProjects/resident-hub","last_synced_at":"2025-10-09T10:32:01.184Z","repository":{"id":49182008,"uuid":"365076258","full_name":"EstebanBorai/resident-hub","owner":"EstebanBorai","description":"🏘️ Residence management system with support for buildings, homes, parking and visitors","archived":true,"fork":false,"pushed_at":"2021-06-24T17:26:21.000Z","size":474,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-22T23:29:48.447Z","etag":null,"topics":["application","docker","fastify","mongodb","next","react","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/EstebanBorai.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}},"created_at":"2021-05-07T01:00:13.000Z","updated_at":"2023-02-03T00:34:30.000Z","dependencies_parsed_at":"2022-09-13T02:53:10.554Z","dependency_job_id":null,"html_url":"https://github.com/EstebanBorai/resident-hub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"EstebanBorai/fastify-nextjs-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EstebanBorai%2Fresident-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EstebanBorai%2Fresident-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EstebanBorai%2Fresident-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EstebanBorai%2Fresident-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EstebanBorai","download_url":"https://codeload.github.com/EstebanBorai/resident-hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235812633,"owners_count":19048947,"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":["application","docker","fastify","mongodb","next","react","web"],"created_at":"2024-10-01T09:23:11.974Z","updated_at":"2025-10-09T10:31:55.733Z","avatar_url":"https://github.com/EstebanBorai.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/logo.png\" height=\"160\" width=\"160\" /\u003e\n  \u003ch1\u003ethruway-parking\u003c/h1\u003e\n  \u003ch4 align=\"center\"\u003e\n    🅿️ Parking Lot management web application for multiple purposes, with slot\n    reservation, users and guests capabilities\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![Build](https://github.com/EstebanBorai/thruway-parking/workflows/build/badge.svg)\n![Test](https://github.com/EstebanBorai/thruway-parking/workflows/test/badge.svg)\n![Lint](https://github.com/EstebanBorai/thruway-parking/workflows/lint/badge.svg)\n\n\u003c/div\u003e\n\n# Stack\n\nThis application is completely build with TypeScript using Fastify and NextJS\nto power up a server with Server Side Rendering capabilities for ReactJS.\n\nDocker is also used to host a MongoDB instance.\n\nFor ReactJS components styles we are using TailwindCSS, composing utilities\nwith the `@apply` and `@screen` features.\n\nLearn more here: [Composing Utilities with @apply](https://v1.tailwindcss.com/course/composing-utilities-with-apply)\n\n# Usage\n\n## Development\n\n\u003e You will need NodeJS v14.15.4 or greather installed to run this project.\n\n1. Install dependencies\n\n```bash\nyarn install\n```\n\nThis command will download all required dependencies for your project.\n\n2. Run the development server\n\n```bash\nyarn run dev\n```\n\nSources will be built and the project will be served on http://localhost:3000/.\n\n## Production\n\nFor production use you must build both client and server source into plain\nJavaScript.\n\nA configuration for this come OOTB with the `build:production` npm script\nwill build both client and server sources separately and prepare a directory\nwith the files\n\n1. Execute `yarn run build:production` to generate `./dist` directory\n2. Execute `node ./dist/main.js`\n\nThe following output should be printed in your terminal\n\n```log\n$ node ./dist/main.js\n\n\u003e event - compiled successfully\n```\n\n## Docker\n\nRun this project with Docker using the `Dockerfile` included.\nFirst you must build the image using `docker build` command:\n\n```bash\nPORT=3000 docker build -t thruway .\n```\n\nThen run the container by using the `./bin/docker_run_default` script.\n\n## Environment Variables\n\nCheck on `.env.sample` for an example of environment variable settings and\ncreate a new `.env` file for your environment variable during development.\n\n| Key                             | Description                                                                                                                                                                                                                                                          |\n| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `ADMIN_EMAIL`                   | Keep the `Email` value consistent for `bootstraping` to run successfully as this email is checked against database in order to create or not the admin user                                                                                                          |\n| `ADMIN_PASSWORD`                | Admin password should only be defined the first time the application runs (when creating the admin user). Remember to updated this password in the future. If no password is defined the first time the application runs, `root` will be used as \"fallback\" password |\n| `NEXT_TELEMETRY_DISABLED`       | Enable/Disable NextJS Telemery. https://nextjs.org/telemetry                                                                                                                                                                                                         |\n| `JWT_TOKEN_COOKIE_NAME`         | JWT cookie name for HTTP Requests                                                                                                                                                                                                                                    |\n| `JWT_REFRESH_TOKEN_COOKIE_NAME` | JWT refresh token cookie name for HTTP Requests                                                                                                                                                                                                                      |\n| `JWT_REFRESH_TOKEN_EXPIRATION`  | JWT refresh token expiration times. The value provided is parsed with [zeit/ms](https://github.com/vercel/ms#examples) package. Make sure you provide a compatible value.                                                                                            |\n| `APPLICATION_DOMAIN`            | Public application URL used for setting cookies on HTTP responses                                                                                                                                                                                                    |\n| `COOKIE_SIGNATURE`              | Secret to sign the cookie using [cookie-signature](https://www.npmjs.com/package/cookie-signature)                                                                                                                                                                   |\n| `JWT_EXPIRATION`                | JWT Expiration Time. The value provided is parsed with [zeit/ms](https://github.com/vercel/ms#examples) package. Make sure you provide a compatible value.                                                                                                           |\n| `JWT_PRIVATE_KEY`               | JWT Private Key. [Read more](https://jwt.io/introduction/)                                                                                                                                                                                                           |\n| `PORT`                          | Port to bind the server                                                                                                                                                                                                                                              |\n| `PGHOST`                        | PostgreSQL host                                                                                                                                                                                                                                                      |\n| `PGPORT`                        | PostgreSQL Port                                                                                                                                                                                                                                                      |\n| `POSTGRES_DB`                   | PostgreSQL database name                                                                                                                                                                                                                                             |\n| `POSTGRES_USER`                 | PostgreSQL database username                                                                                                                                                                                                                                         |\n| `POSTGRES_PASSWORD`             | PostgreSQL database password                                                                                                                                                                                                                                         |\n\n## Database and TypeORM\n\nThis project makes use of a PostgreSQL database instance which is managed via\nTypeORM.\n\nMigrations generated from entities are created via the `migration:generate`\nnode script.\n\nIn order to run pending migrations, first make sure the PostgreSQL database\nis running. If you are using Docker, by executing `docker-compose up database`\nyou should be good to go.\n\nThen execute the NodeJS script `migration:run`.\n\n# Contributing\n\nEvery kind of contribution to this project is welcome, please, don't hesitate\nto open a Pull Request or Issue. I will be happy to help!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStudyResearchProjects%2Fresident-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStudyResearchProjects%2Fresident-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStudyResearchProjects%2Fresident-hub/lists"}