Request a quote
ForgeMe

Productivity · Client project, Perseus Capital

ForgeMe

Goals, tasks, habits and ideas in one place on mobile, administered from a web dashboard that talks to the same database.

In preparation for the stores

Why this app exists

A productivity app does not live without its engine room.

The mobile app is the visible part: what someone opens in the morning to find their goals, the day's tasks, their journal and their ideas.

Behind it, someone has to be able to follow real usage, manage accounts and their roles, send a notification to a precise audience, publish content, fix an entry in the FAQ or update legal texts in several languages. None of that should require shipping a new build to the stores.

That is what the web dashboard is for: it works on the same database as the mobile app, with permissions that cannot be worked around from a client.

How it works

One app, one back office, one database.

  • On mobile: a home screen showing the day's progress, tasks, the journal, ideas, important dates and trips.
  • Analytics: total and active users, completed tasks and live goals, charted by period.
  • Accounts and roles: user management, activity and access levels, down to the administrator list itself.
  • Targeted notifications: composition, audience selection through filters, and a record of what was sent.
  • Publishing: themed content packs, articles with a rich text editor, the FAQ, and legal texts managed across several languages.
  • Subscriptions and operations: plans, billing, promo codes, and a console gathering errors, functions, database, storage and alerts.

The engineering challenges

A back office is judged on what it prevents.

Admin rights carried by the token, not by the database. The role is a signed claim inside the authentication token, not a field a client could write. Two server triggers set and clear that claim when an administrator is added or removed, then revoke refresh tokens so the change applies immediately rather than at the next expiry. An audit trail accompanies every change, in a collection only the server can write to.

Database rules that deny by default. The last rule in the file forbids anything not explicitly allowed. Each user is isolated on their own data tree, and the sensitive areas, audit trail, metric snapshots and budget alerts, are read-only from the client: they exist only through server writes.

Seeing the bill before it arrives. The dashboard reads infrastructure metrics, reads, writes, ninety-fifth percentile latencies and server errors, with an aggregation step matched to the requested period, then the real costs per service from the billing export. If the export table is not in place yet, the response says so explicitly instead of falling over, and a failure on one metric series returns an empty list rather than breaking the whole page. A periodic snapshot and budget alerts complete the setup.

A single-page application on shared hosting. Refreshing a deep link returned an error, since the server looked for a file that does not exist. The automated deployment now generates the server configuration before uploading: route rewriting back to the app, cache expiry, and security headers set along the way.

A back office has no business in a search engine. The dashboard declares itself non-indexable, both in the page and in the file meant for crawlers, and it signs the user out automatically after a period of inactivity, listening to real activity rather than running a plain timer.

The stack

Two clients, one shared foundation.

The mobile app is built with Expo and its file-based router, in React Native and TypeScript. The web dashboard is a React application in TypeScript, built with Vite, styled with TailwindCSS, with Recharts for charting and a rich text editor for articles.

The shared foundation is Firebase: authentication, real-time database and server functions. Those functions go beyond business logic: they query infrastructure monitoring and the billing data warehouse to give the dashboard an honest view of what the service consumes and what it costs.

Expo · expo-router · React Native · React · TypeScript · Vite · TailwindCSS · React Router · Recharts · Firebase Authentication · Cloud Firestore · Cloud Functions · Cloud Monitoring · BigQuery

Download

Not on the stores yet.

ForgeMe is in preparation for the App Store and Google Play. The buttons below will go live on release day, not before.

Coming soon to the App Store Coming soon to Google Play

Got an app idea?

We design, build, test and prepare these apps for the stores ourselves. It is exactly the work we do for the agency's clients.