Feedback App
What is this?
This is a simple app built to collect customer feedback about products.
Why did I create this app?
Initially, I created this app to gather feedback from my own customers. My goal was to keep it as simple as possible to ship quickly. However, as I worked on it, I realized the potential to turn it into a SaaS product. That’s when I began exploring different architectures and tech stacks to find the best fit for my goals.
Architecture & Tech Stack
At first, I used PocketBase as the backend. It offers out-of-the-box features like a database, storage, and authentication, making it easy to get started quickly. I paired it with Nuxt and Nitro, using Nitro as a Backend For Frontend (BFF). At that point, it seemed like all I needed.
Later, I reconsidered the deployment strategy. Deploying PocketBase and Nuxt separately didn’t feel efficient. So, I decided to remove PocketBase and instead implement all core services directly within Nitro. Here’s what I used:
- SQLite – A lightweight, file-based relational database that fits this project well.
- Drizzle ORM – Since SQLite may become less performant as the user base grows, I wanted an ORM to abstract the database and make migrations easier. I considered both Prisma and Drizzle (I’ve used both before) and found Drizzle more suitable for this project.
- unstorage – Since I’m using Nuxt, I was already familiar with the UnJS ecosystem.
unstoragewas a natural fit for handling storage. - better-auth – For now, this library provides the best balance of flexibility and simplicity for authentication.
Deployment
For the deployment, I decided to deploy the app on Cloudflare Pages and uses these services:
- Cloudflare D1 for the database.
- Cloudflare R2 for external file storage.
What’s Next?
There’s still plenty of room for improvement:
- Add unit and end-to-end testing to improve maintainability
- Refactor parts of the codebase to improve reusability
- Build and ship additional features like response analysis and better dashboard tools
Key Features
- Support for multiple merchants and products
- Social login (google)
- Ability to ask customers for ratings
- Clean dashboard interface
- (More features coming soon…)
- AI Integration for response analysis ang generating questions. hold for now
Challenges I Faced
- Replacing PocketBase’s full suite of features with minimal tools while maintaining simplicity
- Implementing transaction-like behavior in Cloudflare D1
- Handling file uploads and ensuring compatibility with Cloudflare Pages
Try the App
🧪 Live App: https://feedback.tsurayya.com
🛠️ Source Code: https://github.com/choliddnr/feedback
Video Demo