Edraya Corporation · private build guide

Hello Sariyah.
You're going to build and run a real app.

Not a tutorial app that gets thrown away — the actual system Edraya will use to manage two rental houses. You'll design it, build it, publish it, and then keep it running. Seven phases. Roughly a month at ten to fifteen hours a week.

This project is private. Edraya is separate from SJ Innovation. Don't post about it, don't put it in SJ channels or systems, and don't share this page or the app with anyone outside Shahed, Shahera and you.

Progress 0 / 0

Start with Phase 0. Read it before you touch anything.

What you're building

Edraya Corporation owns two houses. One is rented as a whole house. The other is split into separate units with separate tenants. Right now everything is tracked by hand.

Your app replaces that. It needs to hold the properties and their units, the tenants and their leases, the monthly invoices, the payments that come in, and the money that goes out on each house. Only three people ever log in: Shahed, Shahera and you. Tenants never log in.

You will build the whole thing with made-up data — invented tenants, invented rents. Real information goes in only when Shahed says the app is ready for it. That means you can break things freely, which is the point.

The two tools, and what each is for

You'll go back and forth between two tools all month. They do different jobs, and mixing them up is the most common way to waste an afternoon.

ToolUse it toDon't use it to
ClaudeThink, plan, write the prompt, understand an error, draft notes and updatesBuild the app. Claude doesn't touch your Lovable project.
LovableBuild, change and publish the actual app. It writes the code and hosts the result.Work out what to build. Turning up with a vague idea gets a vague app.

The loop is always the same: decide what you want → ask Claude to turn it into a clear Lovable prompt → paste it into Lovable → open the preview and check it actually works → fix one thing at a time. Then repeat.

Part 1 — Get set up

  1. 0

    Setup and orientation

    GuidedHalf a day

    Before you build anything, get your accounts working and spend an hour clicking around Lovable with something throwaway. Nothing you make today has to survive.

    Where things live

    ThingWhere
    ClaudeYour own account. This is your thinking partner.
    LovableThe SJ Finance workspace. Shahed will add you. Your project lives there.
    The appWill publish to edraya.sjinnovation.us in Phase 5.
    This guidesariyah.sjinnovation.us — bookmark it.

    Make a scratch project in Lovable first — anything, a page about your favourite food. Send it five messages. Watch what happens when you ask for two changes at once versus one. That hour will save you a week.

    Checklist

Part 2 — Build it

  1. 1

    Properties and units

    GuidedWeek 1 · prompts written for you

    The foundation. A property is a house. A unit is a rentable space inside it. A whole-house rental is just a property with exactly one unit — that sounds fussy now, but it's what lets both Edraya houses work in the same app.

    Three prompts, in order. Send one, check the preview, then send the next. Don't run ahead.

    Prompt 1 of 3 — create the project
    Build an internal admin web app called "Edraya Manager" for a small
    property company. Only signed-in admins use it. There is no public
    side and no tenant-facing side.
    
    Build only this, nothing more:
    - Email and password login using Supabase auth. No public sign-up —
      accounts are created by an admin.
    - After login, a sidebar layout showing the app name "Edraya Manager"
      with one nav item: Properties.
    - A Properties page listing properties in a table with columns:
      name, address, number of units. If there are none, the empty state
      says "No properties yet."
    - An "Add property" button that opens a form with: name, street
      address, city, state, ZIP, notes.
    - Store properties in Supabase.
    
    Style: calm and clean, lots of white space, deep green and warm brass
    accents, plain readable type.
    
    Do not add any feature I have not asked for.
    Prompt 2 of 3 — add units
    Now add units.
    
    - A unit belongs to exactly one property. Fields: label (for example
      "Unit A" or "Whole house"), bedrooms, bathrooms, notes.
    - Clicking a row on the Properties page opens a property detail page
      showing that property's information and a table of its units.
    - Put an "Add unit" button on that detail page.
    - The Properties list should show a live count of units per property.
    
    Do not add tenants or leases yet.
    Prompt 3 of 3 — editing and example data
    Add editing and deleting for both properties and units.
    
    - Edit opens the same form, pre-filled.
    - Delete asks me to confirm first.
    - Deleting a property that still has units should be refused, with a
      clear message explaining why.
    
    Then add two example properties so I can see it working:
    1. "Maple Street House" — one unit labelled "Whole house", 3 bed, 2 bath.
    2. "Oak Avenue Duplex" — two units, "Unit A" (2 bed, 1 bath) and
       "Unit B" (2 bed, 1 bath).
    
    Label these clearly as example data.

    Done when

    • You can log in, and a logged-out visitor can't see anything
    • Both example properties are listed, with unit counts of 1 and 2
    • You can add, edit and delete a property and a unit
    • Deleting a property with units is refused with a message that explains itself
    • Refreshing the page keeps everything — it's saved, not just on screen

    Checklist

  2. 2

    Tenants and leases

    Semi-guidedWeek 2 · you finish the prompt

    A tenant is a person. A lease is the agreement putting that person in a unit for a rent, between two dates. Keep them separate — the same person can have a new lease later, and you don't want to retype them.

    Here's the start of the prompt. You write the rest. Before you send it, ask Claude: "what am I missing from this prompt?" — then decide for yourself whether it's right.

    Starter — finish this yourself
    Add tenants and leases to Edraya Manager.
    
    - A tenant has: full name, email, phone, notes.
    - A lease connects ONE tenant to ONE unit, and has: monthly rent,
      start date, end date (may be blank for ongoing), and status
      (active or ended).
    - A unit can only have one active lease at a time. If I try to add a
      second, refuse it and explain why.
    
    [ Your turn. Add instructions for:
      - where tenants are listed and how I add one
      - what the property detail page shows now that units have tenants
      - what a unit with no tenant looks like
      - two example tenants on the example properties ]

    Done when

    • You can add a tenant without attaching them to anything yet
    • You can put a tenant in a unit with a rent and a start date
    • A second active lease on the same unit is refused
    • A vacant unit is obviously vacant at a glance
    • Ending a lease keeps its history — it doesn't disappear

    Checklist

  3. 3

    Invoices

    On your ownWeek 3 · requirements only

    No prompts from here on. You get requirements and a definition of done. Writing the prompt is now your job — that's the skill this whole month is really teaching.

    An invoice is a bill for one lease for one month. It is not a single rent number: it's a list of lines that add up.

    Requirements

    • One invoice belongs to one lease and covers one month.
    • An invoice is made of line items. Each line has a kind, a description and an amount. The five kinds are: rent, utility, late_fee, charge, credit.
    • A credit is negative — it reduces the total.
    • Generating a month's invoice for a lease should pre-fill the rent line automatically from the lease. Everything else is added by hand.
    • An invoice has a status: draft, sent, paid, overdue.
    • There must be a clean printable view of a single invoice — something you could save as a PDF and email.
    • Money is stored in whole cents, never as a decimal. Ask Claude why if that's new to you. It matters.

    Done when

    • You can generate September's invoice for a lease and the rent line appears by itself
    • You can add a utility line, a late fee and a credit, and the total is right
    • The printable view looks like something a real person would accept
    • Statuses change and are visible in the invoice list
    • Deleting a line updates the total immediately

    Checklist

  4. 4

    Payments and expenses

    On your ownWeek 4 · requirements only

    Money in, money out. This is the phase that makes the app worth using instead of a spreadsheet.

    Requirements — payments

    • A payment is recorded against an invoice: date paid, amount, method (cash, cheque, transfer, other), note.
    • An invoice can have several payments — people pay in parts.
    • Every invoice shows amount due, amount paid and balance.
    • An invoice flips to paid on its own when the balance reaches zero.
    • An unpaid invoice past its due date shows as overdue without anyone clicking anything.

    Requirements — expenses

    • An expense belongs to a property: date, category, amount, vendor, note.
    • Categories at minimum: repairs, maintenance, utilities, insurance, tax, other.
    • A property's detail page shows its total expenses for a chosen month.

    Requirements — the dashboard

    • A home screen showing, for the current month: total invoiced, total collected, total outstanding, total expenses.
    • A list of overdue invoices, worst first.
    • A list of vacant units.

    Done when

    • A part payment leaves the correct balance, and a second payment clears it
    • An invoice you backdate past its due date shows as overdue by itself
    • Expenses appear against the right house and add up correctly
    • The dashboard numbers match what you get adding it up by hand
    • A vacant unit shows in the vacant list the moment its lease ends

    Checklist

Part 3 — Ship it and run it

  1. 5

    Publish to edraya.sjinnovation.us

    Semi-guidedHalf a day · with Shahed

    Building it is half the job. Putting it somewhere real, on a proper address, with real accounts — that's the other half, and most people never learn it.

    What happens

    1. Publish the project in Lovable. You get a .lovable.app address straight away.
    2. In Lovable's settings, add the custom domain edraya.sjinnovation.us.
    3. Lovable gives you a DNS record. Shahed adds it — the domain isn't yours to change.
    4. Wait. DNS is slow; a few minutes to an hour is normal. Don't panic and change things.
    5. Create the three real admin accounts: Shahed, Shahera, you. Delete any test accounts.
    6. Check on a phone. Not just your laptop.

    Before Shahed puts real tenant data in, go through the app and delete every example property, tenant, lease and invoice. Real and fake data must never sit side by side — that's how a made-up rent ends up on a real invoice.

    Done when

    • edraya.sjinnovation.us loads the app over https
    • All three real accounts can log in; no test accounts remain
    • Every piece of example data is gone
    • It works on a phone screen
    • A logged-out visitor sees only the login page

    Checklist

  2. 6

    Running it month to month

    OngoingThe part that never ends

    An app nobody maintains rots. This phase is how you own it properly.

    Your monthly rhythm

    • Generate the month's invoices and check each one before it goes out.
    • Record payments as they arrive, not in a batch at month end.
    • Enter expenses with receipts to hand.
    • Export a backup of the data and keep it somewhere outside Lovable.
    • Send Shahed a short note: what happened, what's outstanding, anything odd.

    When something breaks

    1. Write down exactly what you did and exactly what happened. "It's broken" isn't a bug report — not even to yourself.
    2. Copy the error message. All of it.
    3. Ask Claude to explain the error in plain language before you try to fix it.
    4. Fix one thing. Check. Then fix the next.
    5. If two attempts don't fix it, stop and ask Shahed. Don't spend the afternoon.

    Changing a live app

    Once real data is in there, you can't experiment freely any more. Small changes to how something looks are fine. Anything that touches the data — new fields, changed rules, renamed things — gets discussed with Shahed first, and a backup taken before you start.

    Your code lives in the shahedsj/edraya repository on GitHub. Lovable saves there automatically. You don't need to run any commands, but it's worth opening once a month to see the history of what you changed.

    Checklist

How the app is put together

This is the shape of the data. Get it right early — changing it after real invoices exist is genuinely painful. If a prompt you write would break one of these rules, the prompt is wrong.

TableHoldsConnects to
propertiesA house — name, address, noteshas many units, expenses
unitsA rentable space — label, bedrooms, bathroomsbelongs to a property
tenantsA person — name, email, phonehas many leases
leasesRent, start date, end date, statusone tenant + one unit
invoicesMonth, issue date, due date, statusbelongs to a lease
invoice_linesKind, description, amount in centsbelongs to an invoice
paymentsDate paid, amount, methodbelongs to an invoice
expensesDate, category, amount, vendorbelongs to a property

Two rules that never bend. A whole-house rental is still a property with one unit — never attach a lease straight to a property. And money is stored in whole cents as a round number, never as 1250.50, because decimals drift and invoices stop adding up.

Words you'll keep hearing

Supabase
The database behind your app. Lovable sets it up for you. It's where every property, tenant and invoice actually lives.
Auth
Short for authentication — logging in, and checking who you are. Your app has admin-only auth.
Table
One kind of thing, stored as rows. The tenants table holds one row per tenant.
Row / record
One item in a table. One tenant is one row.
Preview
The live version of your app inside Lovable, only you can see it.
Publish / deploy
Putting your app on a real web address other people can open.
DNS
The system that points a domain name at a server. It's why custom domains take time.
Repo
Short for repository — the folder on GitHub holding your code and its full history.
Commit
One saved change, with a note. Lovable makes these for you as you work.

Do

  • One change per Lovable message
  • Open the preview and actually use it after every change
  • Check money maths by hand at least once per phase
  • Write down what you tried when something breaks
  • Ask after two failed attempts, not after two days

Don't

  • Put real tenant names or rents in before Phase 5
  • Share this page, the app, or screenshots with anyone outside the three of you
  • Ask for five features in one message
  • Assume it works because the preview loaded
  • Change the data structure on a live app without asking first

Stuck? Ask Shahed.

Two honest attempts, then ask. Come with what you tried and what happened — that turns a long conversation into a two-minute one, and it's a habit worth more than anything else on this page.