Skip to content
← All projectsNext: AutoClicker
Mobile · Personal project — 2025

Lexis

A mobile social network for students to share study content. It has an Explore feed, profiles with a follow graph, image and video posts, and live one-to-one chat. The app is written in Flutter with strict MVVM layering and talks directly to Firebase, so feeds and messages update in real time without a custom server. It is a working prototype; comments, stories, notifications and media messages are still to finish.

PrototypeAbout 75% complete (self-assessed, Oct 2025)
Role
Product spec, architecture, Firebase and iOS integration
Stack
Flutter · Dart · Provider · Firebase Auth · Firestore · Storage
Lexis
01 ProblemStudents have no focused, pleasant place to share study content and talk to peers; general social apps aren't built for it.
02 ApproachLayered Flutter app (views, view models, repositories, services) on Firebase, with a reusable glass UI kit.
03 TechnologyFlutter, Dart, Provider, Firebase Auth, Cloud Firestore, Firebase Storage.
04 OutcomeAuth, profiles, follow graph, live feed, media posts and live chat working; about three-quarters complete.

01 — Problem

A single developer needed a real-time social app, with a live feed and chat, instant-feeling likes, media uploads with progress and a follow graph, all in a consistent custom visual style, on one codebase and without building a backend.

02 — Approach

01Strict layersViews render state, view models (Provider ChangeNotifier) hold logic, repositories give a clean data API and services wrap Firebase. Dependencies come through constructors, so layers stay replaceable.
02Real time without a serverFirestore snapshot streams drive the feed, comments and chat with no polling. Firebase Auth and Storage handle accounts and media.
03Safe writes and instant feedbackLikes and bookmarks update locally first and roll back if the write fails. Sign-up deletes the new auth user if the profile write fails. Follows and mark-as-read use atomic batch writes.
04A design system from three screenshotsColours and type were extracted from three reference screens into tokens, and one GlassCard (backdrop blur, translucent gradient, light border) is reused on nearly every screen, in light and dark themes.

03 — Architecture

How the system fits together.

App layers
10 screens5 view models3 repositories3 servicesFirebase AuthFirestoreStorage
Every screen follows the same path down to Firebase, and live data flows back up through snapshot streams.

04 — Decisions

  1. D1Firebase instead of a custom backendOver: A REST APISnapshot streams give real-time updates for free and there is no server to build or host.Trade-offData integrity depends on Firestore security rules and client discipline.
  2. D2Denormalised author dataFirestore has no joins, so copying the author's name and avatar into each post saves a read per card.Trade-offOld posts keep stale copies when a user changes their name or photo.
  3. D3Soft deletesDeleted posts and comments are flagged rather than removed, which is safer and keeps queries simple.

05 — Technology

Framework
Flutter and Dart, configured for iOS
Architecture
MVVM with repository and service layers; Provider
Backend
Firebase Auth, Cloud Firestore, Firebase Storage
UI
Custom BackdropFilter glassmorphism, Material 3 light and dark themes

06 — Outcome

Personal project · 2025
9.4klines of Dart across 38 source files
view models over repository and service layers
~75%complete at the last status update (self-assessed)

07 — Status

Working
  • Email sign-up, sign-in and password reset
  • Profiles, follow graph and content tabs
  • Live feed with optimistic likes and bookmarks
  • Posts with up to 10 images or one video, with upload progress
  • Live one-to-one chat with unread counters
Still to finish
  • Comments screen and media messages (data layer done)
  • Username search (query exists, not wired to the screen)
  • Stories, notifications and social sign-in
  • Tests and pagination

08 — My role

Wrote the product specification and architecture, supplied the reference designs, and handled Firebase and iOS setup, integration and debugging. The code was built with an AI-assisted workflow.

  • Product spec and architecture
  • Firebase integration
  • iOS configuration and debugging
  • Design system from reference screens
Next project · 11AutoClickerA desktop tool that reads numbers on screen with OCR and ML, then clicks exactly where it should.