Inspiration
Getting survey responses as a student is painful. Class projects, club work, and small research all need real answers, but friends get tired of filling forms, and a public Google Form link often comes back with rushed or messy data.
We wanted something simpler: help someone else, and you earn the chance to get help yourself. That loop became Formfuel, built for BUHack 2.0 under Data-driven Apps, with a very clear use case in school and university life in Hong Kong.
What it does
Formfuel is a survey exchange for Hong Kong students. You publish a questionnaire, earn credits by answering other people’s surveys, and spend those credits to collect answers for your own.
You can build surveys inside the app with single-choice, multiple-choice, short-answer, and rating questions, add tags, and share a unique 6-character search code. New users start with 10 credits, and 1 credit covers 10 questions. So if your survey has 6 questions and you put 10 credits on it, you can collect 10 responses.
To keep the data usable, each person can answer a survey only once, owners can set a minimum completion time (capped at 20 seconds per question, with a countdown), and there are optional screening questions plus validation rules. Invalid answers get 0 credits. Owners also get a dashboard with completion counts, simple charts, and a download of the answers.
Live app: https://formfuel-murex.vercel.app
GitHub: https://github.com/MrCk08/Formfuel
How we built it
We built Formfuel with Next.js, TypeScript, and Tailwind on the front end, Supabase for Postgres and Google login, and Vercel for hosting. The servers run in Seoul, so it stays close to students in Hong Kong.
Surveys, answers, credits, and validation all live in the database, not only in the browser. Credits move through a transactional ledger, so publishing a survey, adding more credits later, and rewarding a valid response stay consistent. The same validation rules run on the front end and the server: if a check fails, the response is not saved, it does not use a slot, and it does not award credit.
Challenges we ran into
The hardest part was balance. If answering is too easy to game, the data is useless. If the rules are too strict, nobody finishes. We ended up combining a one-response limit, a timer, screening questions, and creator-set validation.
The credit rule also had to be easy to explain, but exact in the backend. One credit covers 10 questions, and anything under 10 still costs 1 credit, so a short class poll and a longer questionnaire are priced fairly. Because this was a 48-hour hackathon with a new public repo and a hard deadline, we also had to cut scope quickly and still ship something students can actually use.
Accomplishments that we're proud of
We are proud that Formfuel is not just a mockup. In the hackathon window we shipped a working product: login, survey creation, answering, credits, search codes, anti-cheat, validation, and an owner dashboard.
We are also proud of the credit model. It is simple enough to explain in a demo, but precise enough to run in production without the balance drifting. And we already have real student surveys on the platform, not only our own test forms.
What we learned
A survey exchange is less about the form, and more about the rules behind it: how credits move, how a response slot is used, and how you stop junk answers without making the product annoying.
We also learned to keep the client and the database on the same page. If only the front end checks a rule, bad data still gets in, and people can earn credits they should not get. In 48 hours, that meant staying focused: ship a working loop first, not every extra feature we could think of.
What's next for Formfuel
Next, we want to add automatic attention-check questions, so rushed or careless answers are easier to catch without making every survey longer to create. We also want to improve how students find relevant surveys, and keep tightening data quality so the exchange stays useful after the hackathon, not only during it.
Built With
- cursor
- github
- grok
- next.js
- supabase
- vercel