Case study
Stargazerr
A social app built around a digital garden. Users plant "lilies" for wishes, goals and reflections, and watch them grow through visible stages — alongside a friends-only feed, a private journal and a real notification system.
- Role
- Solo — product, frontend and backend
- Period
- 2025 — present
- Links
- stargazerr.vercel.app
- Appreciation
- SvelteKit
- ASP.NET Core
- PostgreSQL
- Cloudinary
- JWT
- PWA
- Render
- Vercel
Stargazerr is a social app built around a digital garden. It has the parts you would expect — accounts, a mutual friend system, a photo and video feed scoped to you and your friends, likes and comments — but the centrepiece is the Garden.
The Garden
Users plant lilies. Each lily stands for a wish, a goal or a reflection, and it grows through four visible stages: Seedling, Sprout, Bud, Bloom. The growth is the point — you plant something, and the app makes you wait for it.
Why there are two growth modes
One schedule could not serve both kinds of lily. A reflective entry has no deadline — it is a feeling you are sitting with, so it grows on a fixed calendar schedule and blooms when it blooms.
A concrete goal is different: it has a date you picked, and the app has no way of knowing whether you actually did the thing. So a goal lily is tied to a user-set target date, and when that date arrives it does not silently bloom — it asks. Confirm that you did it, or extend the date. That confirm-or-extend step is what keeps the garden honest.
Around the Garden
There is a Journal for letters and diary entries, which can be kept private or shared. Notifications are properly persisted rather than fired and forgotten, so a bloom waiting on confirmation is still waiting when you come back three days later. Profile pictures and feed media go through Cloudinary. The whole thing installs as a PWA on mobile.
Architecture
A SvelteKit frontend on Vercel talks to an ASP.NET Core API on Render, backed by PostgreSQL, with Cloudinary handling media and JWT for auth. Splitting the deploy across two hosts kept each side simple, at the cost of having to think about cold starts and CORS.
Leave a note
Something to say?
Thoughts, corrections, or just hello. It goes straight to Farish and is not published anywhere — no other visitor can see it.