PsyCRM
Practice management for one solo therapy practice in Romania: clients, sessions, encrypted notes, invoicing and intake forms. Organised around her day, not around the database.
At a glance
- Four places, named for what she does
- Confidentiality as product, not configuration
- Localised, not translated
The question
The open-source CRMs I looked at carry a sales pipeline you'd spend as long removing as building around, and none of them model an appointment or a clinical note. What would a tool look like if it started from a therapist's working day: the two minutes before someone sits down, and the ten minutes after they leave?
What I built
A practice app with clients, a calendar, session notes, prepaid packages, invoices with gap-free numbering, expenses, reports and intake forms with a public link. The home screen, Azi (today), lists the day's sessions in time order, each with what to walk in with: which session this is, when the last one was, credits left in a package, and a link to reread the last note.
Closing a session is one small sheet: did they come, how did they pay, and is the note written now or later. Paying on the spot issues the invoice already settled. The session screen puts the previous note and the client's context beside the editor, so before and after are one screen.
Inside
How it looks in use.
- Role
- Sole designer, developer and owner
- Built with
- Next.js, Postgres, Prisma, better-auth
- Language
- Romanian, with RON and Romanian invoicing
- Status
- Working, demo data only so far





Up close
The details that carry it.




Decisions that mattered
- Four places, named for what she doesThe menu used to list every table in the database. Now it's Azi, Clienți, Calendar and Bani (money), with the rest tucked under "more".
- Confidentiality as product, not configurationNotes are encrypted by the app before they reach the database, reading a note is itself logged, locked notes keep revisions, and a discretion mode masks names when the screen isn't private.
- Localised, not translatedThe interface is Romanian on purpose, with RON formatting, Romanian dates, CUI and IBAN on invoices and the VAT exemption for psychotherapy cited on every one. One practice, one language, so there's no translation layer to edit around.
What I learned
The first version mirrored the data model, and it was complete and tiring. Reorganising it around a single day, with ordinary statuses in grey and colour kept for warnings, made the same features feel like half as much software.
Something similar in mind?