{"id":14984872,"url":"https://github.com/stefanosaffran/gobarber","last_synced_at":"2025-09-13T14:34:37.680Z","repository":{"id":39563664,"uuid":"263382056","full_name":"StefanoSaffran/gobarber","owner":"StefanoSaffran","description":"💈✂️ GoBarber - A Barber Schedule App  - | - Developed during the bootcamp GoStack by @Rocketseat","archived":false,"fork":false,"pushed_at":"2023-12-15T11:38:57.000Z","size":2536,"stargazers_count":80,"open_issues_count":5,"forks_count":33,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T22:54:16.784Z","etag":null,"topics":["appointment-scheduling","barbershop","context-api","gobarber","gostack","insomnia","javascript","mongodb","nodejs","postgres","react-native","reactjs","rocketseat","theme-switcher","typeorm","typescript"],"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/StefanoSaffran.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":"2020-05-12T15:51:02.000Z","updated_at":"2024-11-11T01:21:23.000Z","dependencies_parsed_at":"2025-02-18T03:42:25.625Z","dependency_job_id":null,"html_url":"https://github.com/StefanoSaffran/gobarber","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanoSaffran%2Fgobarber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanoSaffran%2Fgobarber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanoSaffran%2Fgobarber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StefanoSaffran%2Fgobarber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StefanoSaffran","download_url":"https://codeload.github.com/StefanoSaffran/gobarber/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248312172,"owners_count":21082638,"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":["appointment-scheduling","barbershop","context-api","gobarber","gostack","insomnia","javascript","mongodb","nodejs","postgres","react-native","reactjs","rocketseat","theme-switcher","typeorm","typescript"],"created_at":"2024-09-24T14:09:48.147Z","updated_at":"2025-04-10T22:54:23.361Z","avatar_url":"https://github.com/StefanoSaffran.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://res.cloudinary.com/stefanosaffran/image/upload/v1593524185/zfwgali2ynkoeysxw40m.svg\" width=\"300px\"/\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003ch2 align=\"center\"\u003e\n   💈✂️ GoBarber ✂️💈\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Project programing languages count\" src=\"https://img.shields.io/github/languages/count/StefanoSaffran/gobarber?color=ff9000\"\u003e\n   \u003cimg alt=\"Repository size\" src=\"https://img.shields.io/github/repo-size/StefanoSaffran/gobarber?color=ff9000\"\u003e\n  \u003cimg alt=\"Last commit on GitHub\" src=\"https://img.shields.io/github/last-commit/StefanoSaffran/gobarber?color=ff9000\"\u003e\n  \u003cimg alt=\"Made by Stefano\" src=\"https://img.shields.io/badge/made%20by-StefanoSaffran-%20?color=ff9000\"\u003e\n  \u003cimg alt=\"Project top programing language\" src=\"https://img.shields.io/github/languages/top/StefanoSaffran/gobarber?color=ff9000\"\u003e\n  \u003cimg alt=\"GitHub license\" src=\"https://img.shields.io/github/license/StefanoSaffran/gobarber?color=ff9000\"\u003e\n\u003c/p\u003e \n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#computer-project\"\u003eProject\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#rocket-built-with\"\u003eBuilt with\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#information_source-how-to-run\"\u003eHow to run\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#memo-license\"\u003eLicense\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#mailbox_with_mail-get-in-touch\"\u003eGet in touch\u003c/a\u003e\n  \u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://insomnia.rest/run/?label=GoBarber%20API\u0026uri=https%3A%2F%2Fraw.githubusercontent.com%2FStefanoSaffran%2Fgobarber%2Fmaster%2FInsomnia_2020-06-30.json\" target=\"_blank\"\u003e\u003cimg src=\"https://insomnia.rest/images/run.svg\" alt=\"Run in Insomnia\"\u003e\u003c/a\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## :computer: Project \n\n 💈 A barber scheduling app allowing users to choose from a list of barbers and barbers to track their appointments. 💈\n\n \u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://res.cloudinary.com/stefanosaffran/image/upload/v1593515951/GoStack/wpdzqxxsrsfvmipep1r2.gif\" \u003e\n\u003c/p\u003e\n\n## :rocket: Built with\n\nThis project was developed with the following technologies:\n\n\u003cdetails\u003e\n  \u003csummary\u003eBackend\u003c/summary\u003e\n\n-   [Node.js](https://nodejs.org/)\n-   [Express](https://expressjs.com/)\n-   [TypeORM](https://typeorm.io/)\n-   [Typescript](https://www.typescriptlang.org/)\n-   [TS-Node-Dev](https://www.npmjs.com/package/ts-node-dev)\n-   [MongoDB](https://www.mongodb.com/)\n-   [Docker](https://www.docker.com/docker-community)\n-   [PostgreSQL](https://www.postgresql.org/)\n-   [JWT](https://jwt.io/)\n-   [Celebrate](https://github.com/arb/celebrate)\n-   [AWS S3](https://aws.amazon.com/pt/s3/)\n-   [Multer](https://github.com/expressjs/multer)\n-   [Tsyringe](https://github.com/microsoft/tsyringe)\n-   [uuidv4](https://www.npmjs.com/package/uuidv4)\n-   [Bcrypt](https://www.npmjs.com/package/bcrypt)\n-   [Cors](https://www.npmjs.com/package/cors)\n-   [Dotenv](https://www.npmjs.com/package/dotenv)\n-   [Handlebars](https://handlebarsjs.com/)\n-   [Nodemailer](https://nodemailer.com/about/)\n-   [ESLint](https://eslint.org/)\n-   [Prettier](https://prettier.io/)\n-   [VS Code](https://code.visualstudio.com/)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eFrontend\u003c/summary\u003e\n\n-   [React](https://pt-br.reactjs.org/)\n-   [Typescript](https://www.typescriptlang.org/)\n-   [Unform](https://unform.dev/)\n-   [Styled Components](https://styled-components.com/)\n-   [Context API](https://reactjs.org/docs/context.html)\n-   [React-toggle](https://github.com/aaronshaf/react-toggle)\n-   [React-spring](https://www.react-spring.io/)\n-   [Polished](https://polished.js.org/)\n-   [Yup](https://www.npmjs.com/package/yup)\n-   [Date-fns](https://date-fns.org/)\n-   [uuidv4](https://www.npmjs.com/package/uuidv4)\n-   [Axios](https://www.npmjs.com/package/axios)\n-   [React Icons](https://react-icons.netlify.com/#/)\n-   [ESLint](https://eslint.org/)\n-   [Prettier](https://prettier.io/)\n-   [VS Code](https://code.visualstudio.com/)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eMobile\u003c/summary\u003e\n\n-   [React](https://pt-br.reactjs.org/)\n-   [React Native](https://reactnative.dev/)\n-   [Typescript](https://www.typescriptlang.org/)\n-   [Unform](https://unform.dev/)\n-   [Styled Components](https://styled-components.com/)\n-   [Context API](https://reactjs.org/docs/context.html)\n-   [React Navigation](https://reactnavigation.org/)\n-   [React Native Vector Icons](https://github.com/oblador/react-native-vector-icons)\n-   [Axios](https://www.npmjs.com/package/axios)\n-   [ESLint](https://eslint.org/)\n-   [Prettier](https://prettier.io/)\n-   [VS Code](https://code.visualstudio.com/)\n\n\u003c/details\u003e\n\n## :information_source: How to run\n\n### Requirements\n\nTo run the application you will need:\n* [Git](https://git-scm.com)\n* [Node](https://nodejs.org/)\n* [Yarn](https://yarnpkg.com/) \n\nI strongly recommend using [Docker](https://www.docker.com/) to run the databases.\n\u003cbr\u003e\nIf you decide to use docker, follow this steps to install and run the docker image.\n\n```bash\n# install Postgres image (if you don't specify an username it will be postgres by default)\n$ docker run --name postgresimagename -e POSTGRES_PASSWORD=yourPassword -p 5432:5432 -d postgres\n\n# install Mongo image\n$ docker run --name mongoimagename -p 27017:27017 -d -t mongo\n\n# install Redis image\ndocker run --name redisimageName -p 6379:6379 -d -t redis:alpine\n\n# start Postgres\n$ docker start postgresimagename\n\n# start Mongo\ndocker start mongoimagename\n\n# start Redis\ndocker start redisimageName\n\n```\n### Backend\nNow clone the repository and install the dependencies.\n```bash\n# to clone the repository\n$ git clone https://github.com/StefanoSaffran/gobarber.git\n\n# go into the backend folder\n$ cd gobarber/backend\n\n#install the backend dependencies\n$ yarn\n\n```\nIn order to connect to the database, you will need to enter the access informations into a ormconfig.json. You can find more about it [here](https://typeorm.io/#/using-ormconfig).\n\nAlso, you have to configure the enviroments variables in the .env file, based on a .env.example file that is provided in the backend folder, change the variables according to your environment.\n\n```bash\n# run migrations\n$ yarn typeorm migration:run\n\n# run api\n$ yarn dev:server\n```\n\n### Frontend\n\n```bash\n# in another tab of the terminal install the frontend dependencies and run it \n$ cd frontend\n$ yarn\n$ yarn start\n```\n\n### Mobile\n\nfor mobile you need the Android emulator with the SDK installed or IOS emulator and the react-native cli.\n\n\u003cblockquote\u003eThe project was developed and tested on Android emulator\u003c/blockquote\u003e\n\n```bash\n# install dependencies and run the mobile\n$ cd mobile\n$ yarn\n\n# first open the emulator and start the react native server\n$ yarn start\n\n# in another tab install and run the app\n$ yarn android\n\n```\n\n## :memo: License\n\nThis project is under the MIT license. See the [LICENSE](https://github.com/StefanoSaffran/gobarber/blob/master/LICENSE) for more information\n\n## :mailbox_with_mail: Get in touch!\n\n\u003ca href=\"https://stefanosaffran.com\" target=\"_blank\" \u003e\n  \u003cimg alt=\"Website - Stefano Saffran\" src=\"https://img.shields.io/badge/Website--%23F8952D?style=social\"\u003e\n\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://www.linkedin.com/in/stefanosaffran/\" target=\"_blank\" \u003e\n  \u003cimg alt=\"Linkedin - Stefano Saffran\" src=\"https://img.shields.io/badge/Linkedin--%23F8952D?style=social\u0026logo=linkedin\"\u003e\n\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"mailto:stefanoas@gmail.com\" target=\"_blank\" \u003e\n  \u003cimg alt=\"Email - Stefano Saffran\" src=\"https://img.shields.io/badge/Email--%23F8952D?style=social\u0026logo=gmail\"\u003e\n\u003c/a\u003e \n\n---\n\nMade with :coffee: and ❤️ by Stefano Saffran.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanosaffran%2Fgobarber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanosaffran%2Fgobarber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanosaffran%2Fgobarber/lists"}