{"id":20375644,"url":"https://github.com/juliolmuller/feedget","last_synced_at":"2026-04-13T14:31:46.058Z","repository":{"id":110656120,"uuid":"490115466","full_name":"juliolmuller/feedget","owner":"juliolmuller","description":"Amazing 💖 full JS stack application to collect feedback from users in a website or mobile app. Project developed during the 8th edition of Next Level Week, delivered by RocketSeat.","archived":false,"fork":false,"pushed_at":"2025-12-19T19:05:14.000Z","size":1070,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-21T05:03:12.698Z","etag":null,"topics":["feedback","next-level-week","nlw","node","prisma","react","react-native","rocketseat","tailwindcss"],"latest_commit_sha":null,"homepage":"https://jlm-feedget.vercel.app/","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/juliolmuller.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-09T02:57:26.000Z","updated_at":"2025-12-19T19:04:57.000Z","dependencies_parsed_at":"2025-04-25T04:26:49.088Z","dependency_job_id":"d6d0b335-b16c-4e80-a4b7-ff1958654393","html_url":"https://github.com/juliolmuller/feedget","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/juliolmuller/feedget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliolmuller%2Ffeedget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliolmuller%2Ffeedget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliolmuller%2Ffeedget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliolmuller%2Ffeedget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juliolmuller","download_url":"https://codeload.github.com/juliolmuller/feedget/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliolmuller%2Ffeedget/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31757477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T13:27:56.013Z","status":"ssl_error","status_checked_at":"2026-04-13T13:21:23.512Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["feedback","next-level-week","nlw","node","prisma","react","react-native","rocketseat","tailwindcss"],"created_at":"2024-11-15T01:32:17.896Z","updated_at":"2026-04-13T14:31:46.047Z","avatar_url":"https://github.com/juliolmuller.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 title=\"Move.It\" align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/44725817/212798957-efac4cb1-c290-451b-bf8e-1c633b44f4b5.png\" width=\"24px\" alt=\"Logo icon for Feedget\" /\u003e\n  FEEDGET - The Widget to Get Feedback\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#trophy-lessons-learned\"\u003eLessons Learned\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#rocket-technologies--resources\"\u003eTechnologies\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#hammer-setting-up-the-environment\"\u003eEnvironment Setup\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#zap-features-implementations\"\u003eFeatures\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/static/v1?labelColor=000000\u0026color=8257e6\u0026label=created%20at\u0026message=may%202022\" alt=\"Creation Date\" /\u003e\n\n  \u003cimg src=\"https://img.shields.io/github/last-commit/juliolmuller/feedget?label=updated%20at\u0026labelColor=000000\u0026color=8257e6\" alt=\"Update Date\" /\u003e\n\n  \u003cimg src=\"https://img.shields.io/static/v1?labelColor=000000\u0026color=8257e6\u0026label=PRs\u0026message=welcome\" alt=\"Pull Requests Welcome\" /\u003e\n\n  \u003cimg src=\"https://img.shields.io/github/license/juliolmuller/feedget?labelColor=000000\u0026color=8257e6\" alt=\"Project License\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/44725817/212799323-b9c7c6d4-c60a-436f-8d64-ebeea38ca821.gif\" alt=\"Application Overview\" width=\"400\"\u003e\n\u003c/p\u003e\n\nApplication developed during eighth edition of [Next Level Week](https://nextlevelweek.com/), delivered by [RocketSeat](https://rocketseat.com.br/). The objective here was to build a full JS stack widget to collect bug reports and feedbacks, so it can be embedded in any web or mobile application. Although the _React Native_ version was skipped, I was able to build (and have fun) the version for browsers and the backend for it. Amazing technologies learned!\n\n[Check out the application running!](https://jlm-feedget.vercel.app/)\n\n## :trophy: Lessons Learned\n\n- Building a **React** application using **Tailwind CSS**;\n- Taking screenshots directly from the browser;\n- Creating accessible and keyboard-controllable interfaces (little hel from **Headless UI**);\n- Adding and setting **Prisma** as ORM tool in a **Node** environment;\n- Dealing with emails in development environment (with **MailTrap**);\n- Organizing backend project following **SOLID** principles;\n- Setting **unit testing** on the server-side;\n- Deploying the applications at **Vercel** and **Railway**\n\n## :rocket: Technologies \u0026 Resources\n\n**Frontend:**\n- [Bun](https://bun.sh/) as package manager and development runtime\n- [Vite.js](https://vitejs.dev/)\n- [React.js](https://reactjs.org)\n- [Tailwind CSS](https://tailwindcss.com/)\n- [Phosphor Icons](https://phosphoricons.com/)\n- [Headless UI](https://headlessui.dev/)\n- [HTML-to-Canvas converter](https://yorickshan.github.io/html2canvas-pro/)\n\n**Backend:**\n- [Bun](https://bun.sh/) as package manager, test runner and runtime\n- [Express.js](https://expressjs.com/)\n- [Prisma](https://www.prisma.io/)\n- [Insomnia](https://insomnia.rest/)\n- [MailTrap service](https://mailtrap.io/)\n- SOLID principles\n- SQLIte database\n\n**Development:**\n- [Visual Studio Code](https://code.visualstudio.com/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [ESlint](https://eslint.org/) and [Prettier](https://prettier.io/)\n\n## :hammer: Setting up the Environment\n\nTo set up the projects in your environment, make sure to have **Bun 1.3+** installed in your machine and the `bun` shortcuts available through the command line.\n\nBesides, you will need to create a `.env` file in both folders `/server` and `/web`. These file hold some configuration and secrets to make the application runnable. You can use the `.env.example` file as template to know which variables should be configured.\n\nWith all these set, run the following commands to install dependencies and configure your database:\n\n```bash\n# Backend project\n$ cd server/\n$ bun install       # install project dependencies\n$ bun run prepare   # update Prisma's interfaces with DB schema\n$ bun run migrate   # ensure your DB schemas is up-to-date\n$ bun run dev       # start the server in development mode\n\n# Frontend project\n$ cd web/\n$ bun install       # install project dependencies\n$ bun run dev       # start the server in development mode\n```\n\n## :zap: Features Implementations\n\nThe main idea of the project was developed during the NLW (Next Level Week) event and the result is the one available in [release v1](https://github.com/juliolmuller/feedget/releases/tag/v1.0.0). Afterwards, any incoming commits are intended to be incremental updates to improve the application, as proposed at the end of the event.\n\nBesides, base project layout \u0026 design is available at **[Figma](https://www.figma.com/file/AsyJFfGRy4RbYPfBVYvE5q/Feedback-Widget)**.\n\n- Frontend web:\n  - [x] Create project using **Vite** and **TypeScrip**;\n  - [x] And and configure **Tailwind CSS**;\n  - [x] Create button to open dialog;\n  - [x] Use **Headless UI** to create dialog (accessibility-ready);\n  - [x] Create components based on **Figma** layout;\n  - [x] Implement workflow functionalities;\n  - [x] Refine accessibility and navigation via keyboard;\n  - [ ] Implement light theme for the project;\n  - [ ] Convert project to a **node package** and publish it in `npm`;\n  - [ ] Create panel to display submitted feedbacks;\n- Frontend mobile:\n  - [ ] Create **React Native** project using **Expo**;\n  - [ ] Implement navigation and swipe animations to open and close widget;\n  - [ ] Create components based on **Figma** layout;\n  - [ ] Implement workflow functionalities;\n- Server:\n  - [x] Create node project with **Express** and **TypeScript**;\n  - [x] Add and configure **Prisma** as application ORM;\n  - [x] Configure mail library to notify new incoming feedbacks/records;\n  - [x] Implement business logic and services in a single file;\n  - [x] Refactor project following SOLID principles;\n  - [x] Add and configure **Jest**;\n  - [x] Create unit tests for application core and ensure coverage of 100%;\n  - [ ] Replace **MailTrap** by a custom SMTP provider;\n  - [ ] Enhance look of email sent by the application;\n  - [ ] Create an endpoint to recover all created feedbacks;\n- Integration and deploy:\n  - [x] Integrate front and backend via HTTP requests;\n  - [x] Prepare environments for deploy (`.env` file and `package.json` scripts);\n  - [x] Configure **Vercel** to deploy frontend project;\n  - [x] Configure **Railway** to deploy database and backend project;\n  - [x] Create reference docs for GitHub repository;\n\n---\n\nAlso checkout the project developed in [NLW #2](https://github.com/juliolmuller/proffy), [NLW #3](https://github.com/juliolmuller/happy), [NLW #4](https://github.com/juliolmuller/move.it), [NLW #5](https://github.com/juliolmuller/podcastr) and [NLW #6](https://github.com/juliolmuller/letmeask).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliolmuller%2Ffeedget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliolmuller%2Ffeedget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliolmuller%2Ffeedget/lists"}