
Technologies Used
React
TypeScript
Firebase
Tailwind CSS
shadcn/ui
About the Project
Phunction.io is a web application with the aim of helping users in planning, sharing, and gamifying their events.
How did Phunction.io come to be?
Phunction.io started out as an idea my friend from undergrad had. It was to keep track of how many people we met at the event we were going to be at (we’re quite competitive). The only issue was that my friend lived 5 hours away in a different state. Using my background in building web apps for the past years, I decided to quickly build up an POC which would allow us to track each others connections in real-time.
And thus Phunction was created.
Key Features
- Modern Design: Clean and minimalistic interface using shadcn/ui components
- Responsive Layout: Phunction.io was designed mobile-first given the accessability of keeping track of event changes using our phones
- Performance Optimized: Phunction.io was designed to reduce API requests, as Google’s Firebase SDK is generous with its rate limits (but not completely free)
- Clean Architecture: in the project’s second iteration, I decided to utilize Robert C. Martin’s Clean Architecture to maintain organize and scalable codebase
Technical Details
The website is built using:
- Next.js: as its primary JavaScript library, Next was selected so I get further familar with server actions
- TypeScript: For type safety when making REST calls or mutating data via server actions (But overall I use TS for predictability)
- Tailwind CSS: For utility-first styling. Not having to worry about CSS organization when building an application swiftly is crucial in delivery time (in this case)
- shadcn/ui: Shadcn while potentially overused, offers a sleek and modern feel. Which when paired with custom styles and themes can really pop here.
Lessons learnt when making Phunction.io
- In retrospect, I would have picked using a relational database (RDB) such as PostgreSQL over Firebase to prevent vendor lock with firebase. A well supported and cloud offering such as Supabase comes to mind.
- Designing a landing page is surprisingly harder than one would think, would love to get some design experience
- Making a leveling system can be hard, given if a user tries to maliciously level up
Future Improvements
- Fix alpha-tester bug fixes
- Onboard SMS updates and other integrations to make Phunction.io feel apart of the users phone
- Improve rate limiting logic and all hardware vulnerable attacks
- Test scalability as new users join and create new events
- Adjust leveling system and award system to improve user retention