red finch/dev, home
← All projects

LampLit

Beta

App · Android · iOS in review

A phone app that works like a light on your porch. Turn your light on when you're up for company, and the friends who see it can knock or text you.

The Android app has been on Google Play in the US since October 2026, and the iPhone app is in App Store review. Some launch work is still open.

What it is

You turn on a light in the app when you're up for company. The switch sits beside a drawing of your house. You pick the kind of time you want (Chill, Active or Either) and how long the light stays on, and you can add a short note such as "Coffee's on, come by." Only friends you have accepted see it. You sort them into streets, private lists such as your neighbors or the parents at school, and you choose which streets see each light.

A friend who sees your light can knock with one tap, which tells you they're free too. The knock arrives as "Marcus is knocking. Up for company?" with two answers, Come on over and Not right now. Saying no takes one tap and needs no reason. A Text button opens your own messaging app with a note already started. When you're out at a café or a park, the app can show a small picture of the place instead of your house, and friends can ask to join you there.

LampLit never hosts a chat. It has no counts or streaks, and no one can see when your light was on. It doesn't use your phone's location. You type your town and choose what friends see. A saved address goes to a friend when you say Come on over, for that visit, or to streets you pick. A light that's off looks like nobody is home. It is for adults 18 and older in the US who already know each other.

As of 4 November 2026, the Android app is on Google Play in the US, and Apple is still reviewing the iPhone app. Some launch work remains open. Widgets for the home screen and the lock screen are planned and not built yet.

What it looks like

  • The Your light screen. A lit house with an open door, a stroller and a child with a red balloon in the yard, drinks on the step and a car in the driveway. Below it are the Chill, Active and Either buttons, the note "Coffee's on, come by" and 2h 1m left, with Switch off and I'm done at the bottom.
    Your light, with Chill picked and a note for friends.
  • The Streets tab at night. Regulars is empty except for an Add mailbox. Brookline Moms shows three lit places for Jess, Dana and Alana, one of them a park bench. Family shows one dark house.
    The Streets tab, with demo friends whose lights are on.
  • An iPhone notification marked Time Sensitive that reads "Lauren is knocking. Up for company?", pressed open to show two buttons, Come on over and Not right now.
    A knock from a demo friend, with both answers on the notification.

Why I'm building it

People want to see their friends in person, but they worry about imposing, and nobody wants to be the one who asks. I built LampLit around people like a parent with kids in the yard and one free hand, or a student who doesn't want to look needy.

A porch light already tells neighbors you're around and up for company. LampLit does the same for friends, so when your light is on, a friend who is free can knock without anyone having to ask first.

The number I care about is confirmed hangouts per person per week. I also want people to spend under two minutes a day in the app, and I don't count installs or screen time as success. LampLit is free. It has no ads and nothing to buy.

How it works

Here is what happens between turning a light on and a friend knocking.

  1. Light onYou tap the switch, and your screen shows the light right away while the app tells the server.Expo app
  2. Who sees itOne database query decides which friends can see the light, based on your streets and your blocks.Rails and PostgreSQL
  3. Live updateFriends with the app open get a small signal and reload, and your house shows lit on their streets.Action Cable on Solid Cable
  4. AlertA friend with the app closed can get a notification, if they turned these alerts on and their own light is on.APNs and Firebase Cloud Messaging
  5. KnockA friend taps Knock, and you answer Come on over or Not right now from the app or the notification.APNs and FCM
  6. VisitCome on over sends your saved address for that visit, if you saved one, and the card disappears within 12 hours.Rails

If nobody knocks, the light turns itself off at its end time, and nobody is shown that it went unanswered.

The hard parts

Building it with AI agents from a written spec

Before most of the code existed, I decided how LampLit should behave. The first spec had 514 numbered rules in 14 areas and 69 step-by-step user flows, and I reviewed it chapter by chapter on 7 and 8 October 2026. That night, AI coding agents built the API, the phone app, the drawings and the tests from that spec. The work was split into 17 lanes, each on its own branch.

By morning the backend and app unit tests passed, and the tests that drive the whole app in a browser did not. They became a required, passing check on 20 October 2026. I added gates around the agents' work. A CI check fails any change to a decided rule unless the change log cites me, and a skeptical reviewer agent checks risky pull requests for bugs before they open. About nine in ten of the 538 commits list Claude as a co-author.

Location privacy and safety

A lit house in LampLit tells friends you're around and up for visitors, which is exactly what a controlling partner would want to know. So the app never reads the phone's location, and a light that is off looks the same as nobody home. Friends see your town or nothing. A saved address reaches only a friend you tell to come over, for that visit, or a street you chose to show it to.

Who can see a light is decided by one database query, and nothing else in the code may decide it. A live update carries no details about a light, only a signal to reload through that same query, so it can't show a light to someone outside its audience. Report and block are on every person's page, and the person is never told. Next on the list is a safety check on the notes people write on their lights.

Needing friends nearby before it is useful

A light only helps if friends who can come over are on LampLit too. A new account starts with empty streets, so sign-up is built around bringing friends along. It asks who you want to see more and says three people make a street worth checking, but it lets you go on with fewer. Invites go out as texts from your own number, with a one-time code that makes that person your friend when they join.

The iPhone version comes with a small App Clip, so an invite link opened on an iPhone without LampLit shows your friend's house and keeps the invite through the install. A helper can also set the app up for someone else, such as a parent, and hand the phone over without keeping any access. There is no way yet to include friends who won't install the app, and that idea is on the roadmap.

Getting sign-in texts delivered

Every account starts with a US mobile number, confirmed by a texted code. Carriers block texts from a toll-free number until its registration is approved, and AWS turned down LampLit's registration twice in October 2026, citing the website and the business name. The site was a JavaScript app whose plain HTML did not name the company, so I added a plain HTML home page and a line on every page that names Red Finch Advisory LLC.

On 16 October 2026 I moved sign-in codes to Twilio Verify, which sends from Twilio's own registered numbers. A server switch picks the sender, so changing it needs no app update. Amazon SES also declined production access for email, so LampLit sends email through Resend.

Store review and a new age law

Texas passed a law on app-store age checks, SB 2420. My reading of it is that apps must use the store's age data, and that a question at sign-up does not meet it on its own. So at sign-up and at every launch, LampLit asks the App Store or Google Play whether you're 18 or older, where the store has that answer. It keeps only which store confirmed you're an adult and when. It does not keep your age.

The iPhone listing's name, "LampLit: Up for Company?", has more words because the plain name Lamplit was already taken on the App Store. Before submitting, I had AI agents run mock App Store and Google Play reviews, and I fixed the clear-cut problems they found. Both stores got version 1.1.0 on 21 October 2026. Google Play published it, and the iPhone version is in App Store review.

What it runs on

No AI model runs inside the app. Claude Code agents did most of the building, working from the spec.

LayerWhatNotes
Phone appExpo SDK 57, React Native 0.86, React 19, TypeScriptOne codebase for iPhone and Android, built for the stores on my own Mac.
Drawingsreact-native-svg and a shared package of layered SVG partsThe server sends facts, such as an open door or kids in the yard, and the app stacks the matching parts into a house.
iPhone invitesAn App Clip in SwiftUIOpens an invite link on an iPhone without LampLit and passes the invite to the full app after install.
APIRuby 3.3, Rails 8.1, PumaBackground jobs, such as timers and lights ending on time, run inside the web server process, so the API fits on one small server.
DatabasePostgreSQL 18 on Amazon RDSBackground jobs and live updates also run on Postgres, so the setup needs no Redis.
Live updatesAction Cable on Solid CableA message carries only what changed and when, and the app reloads it through the same privacy rules.
NotificationsApple Push Notification service and Firebase Cloud MessagingSent straight from the API, with Come on over and Not right now on the knock notification.
Texts and emailTwilio Verify and AWS End User Messaging for sign-in codes, Resend for emailA server switch picks the text sender, so changing it needs no app update.
AddressesMapboxSuggests towns and addresses as you type, and the app never reads the phone's location.
HostingAWS (Lightsail, RDS, S3, CloudFront, Route 53), Terraform, KamalThe API runs on one Lightsail server with 1 GB of memory, and the AWS setup is in Terraform, changed through pull requests.
Tests and CIMinitest, Jest, Vitest, Playwright, GitHub ActionsPersona flows written from the spec run in a browser against the API, a required check since 20 October 2026.
commits on main
538
lines of product code
59,001
lines of tests
47,879
rules in the spec
670

Counts read from the repository on 4 Nov 2026.

Other projects

  • A music ranking and concert discovery app. You sort the music you love into tiers, then use that crate to compare taste with friends and find concerts by those artists near you.

    App · iOS · Android · Web

    2,380 commitssince Jun 2026
  • Crate ingest pipeline

    In development

    A pipeline that finds concerts on the venues' and promoters' own pages and in the ticketing feeds, and turns them into one clean record for each show. I am building it to feed the concert listings in The Crate, and later to offer as a dataset of its own.

    Data pipeline

    570 commitssince Oct 2026
  • A website for designing your own mattress in 3D. You stack layers of wool, latex, foam and coils, drag them into the order you want, and watch the bed and its price change as you go.

    Web app

    34 commitssince May 2026