points
A mock social media app
Written in frontend with Flutter using bloc as the state managment, as well supabase in the backend for auth, data storage, and realtime syncing Features include authentication, a chat, notifications, updating your profile, as well as a friend system (that includes friend requests and blocking)
Idea
The idea is to mock other social media, by giving each other useless points, which mock likes, subscribers and karma in other social media. This is why that app is called ‘points’, the main idea revolves about giving and collecting points and striving to have as many as possible. The idea (the abstraction of social media down to the ranking of people) is inspired by Black Mirror’s Nosedive and Community’s Meow Meow Beanz.
The application is intended as a flutter example for state management, with bloc and for using supabase in flutter and is not meant to be a serious application.
The points system
You can give points to only your friends and after each day the points are redistributed. That means 10% of your points will be converted to points that you have to give to someone else, ‘gives‘.
If you do not give all your gives to someone else, these gives will be destroyed and given to other people, the amount of gives will also be subtracted from your points.
The lowest your points can sink to is 0, then you are also unable to get any more gives, until one of your friends else gives you points again.
Other features
- a friend system with friends, friend requests and blocking of users
- live updating of your relations (friends, requests and blocks), along with the profiles of the friends
- profile editor (edit your icon, name, status, bio and color)
- chatting with all your friends
- notifications (however only inside the app)
- searching for users
- requesting to be friends with a user via email
Project overview
Technologies
Backend
- supabase powered by a PostgreSQL database
Frontend
- Flutter as the main UI framework
- flutter_neumorphic for the neumorphic look
- ionicons for the icons and Courier Prime for the font
- supabase client library for flutter to connect to the supabase backend
- flutter_bloc (with cubits) for the state_management
- in app notifications for notifications inside the app
A more in-Depth introduction to the project
Project timeline
Getting started
To run the project:
- Clone the project
- Run the script
pub-installer.sh
to install the packages - Use the default supabase project by changing nothing or create a new one and use it instead
- Run the app or build it with increased FPS (because of the graphically complex neumorphic design) using SkSL warmup to reduce the shader compilation jank:
flutter build [build target] --bundle-sksl-path flutter_01.sksl.json