ToMotion AI logo
Menu
Back to gallery

Public AI explainer video

Build a Citizen Request Tracker with React, FastAPI and PostgreSQL

A todo app can save a record. But when a resident reports a pothole by phone or email, the report can disappear into follow-up calls, with no reference...

Prompt

Source idea used to generate this video.

Build a Citizen Request Tracker with React, FastAPI and PostgreSQL Product overview script Narration: 605 words, about 4 min 39 s at 130 words per minute SCENE 1: The problem VISUAL: a busy council contact centre, agents on phones beside a wall map pinned with potholes and broken streetlights NARRATION: Larkmoor City Council is a fictional town council with a very real problem. Residents report potholes, broken streetlights and missed bin collections by phone or email. Nobody receives a reference number, so there is nothing to follow up with. A third of all calls to the contact centre simply ask for an update. SCENE 2: Who it is for VISUAL: a resident checking a phone at a bus stop, intercut with a case officer at a desk reviewing a laptop NARRATION: Three groups of people lose time to this problem every single day. Citizens want to report a problem once and know that it is being handled. Contact centre agents want fewer repeat calls, so they can help people with new issues. Case officers in the Neighbourhood Services team need a simple way to post updates. And every update should reach the citizen without another phone call. SCENE 3: Reporting an issue VISUAL: a phone showing a short report form, then a confirmation panel with a large reference number and a target date NARRATION: The answer is Larkmoor Citizen Desk, a small public web application for the council. A citizen picks a category, then describes the location and what is wrong. They press submit and receive a reference number straight away. They also see a target date, so they know when to expect a fix. There is no account to create and no password to remember. SCENE 4: Tracking progress VISUAL: a tracking page with a coloured status badge and a vertical timeline of dated notes from the council NARRATION: Later, the citizen types their reference number into the tracking page. They see the current status, the target date and every update in order. Each update carries a short note that the council wrote for the citizen. Case officers move each request from Submitted to In review, Scheduled and Resolved. When the council cannot help, the request is marked Not actioned, with an explanation. In this lab, case officers make updates through the service's built in documentation page. SCENE 5: The business rules VISUAL: a report form with friendly error messages under each field, beside a calendar with a target date circled NARRATION: Behind the screens, clear business rules keep every request clean and predictable. Every field is checked in the browser and then checked again on the server. If anything is wrong, the citizen sees every problem at once, in plain English. Target dates come from the category, such as five days for a pothole. A missed bin collection gets two days, and graffiti removal gets ten. Status changes follow a fixed path, and a closed request can never be reopened. Marking a request Not actioned always requires a note for the citizen. SCENE 6: Privacy and reliability VISUAL: a case card showing status and timeline, with the citizen's name and email visibly left out and a small padlock icon NARRATION: Anyone who holds a reference number can open the tracking page. So the tracking view never shows the citizen's name or email address. Each new request and its first history entry are saved together, or not at all. Both screens work on a phone, and both can be used with the keyboard alone. If the service is down, citizens see a friendly message and a retry button. SCENE 7: What you build VISUAL: a split screen showing a web page, a Python service log and a database table of service requests NARRATION: You build Larkmoor Citizen Desk from a starter project in about three hours. The theme, setup scripts and tests are ready, so you focus on real logic. On the front end, you build two React screens for reporting and tracking. In the middle, a Python web service built with FastAPI applies the rules. Underneath, a PostgreSQL database stores categories, requests and the full status history. Setup steps cover Windows and macOS, and the database works with or without a password. SCENE 8: What you take away VISUAL: a developer smiling at a screen of passing tests, with the finished app open on a second monitor NARRATION: Along the way, you practise skills that employers expect from a junior full stack engineer. You handle forms and data loading in React, and validation in FastAPI. You design a clean web API that returns the right status for every situation. You write safe database queries and use transactions to keep data consistent. Automated tests on both sides prove that every rule really works. The finished project is a complete feature you can demo and explain in an interview. SCENE 9: Start building VISUAL: the Larkmoor Citizen Desk report screen on a laptop, with a bright start button below it NARRATION: This lab is called Build a Citizen Request Tracker with React, FastAPI and PostgreSQL. Start today, and ship your first full stack feature from the form to the database.

Narration

Narration used to create this video.

Video narration

A todo app can save a record. But when a resident reports a pothole by phone or email, the report can disappear into follow-up calls, with no reference number or answer. Larkmoor Citizen Desk turns that familiar path into a tracker. A citizen submits an issue, gets a reference number and target date, then checks its status and history later. The value is not the form. It is the workflow behind it. React handles the screens. FastAPI validates the request, applies category, status, and note rules, and stores it in PostgreSQL. The tracking view returns progress without exposing the citizen's name or email. Validation runs in browser and on server. Controlled status changes, consistent saves, keyboard support, and automated tests make it an engineering feature, not a tutorial. Build it in three hours, then demo the feature from report form to database in your portfolio. Start the lab.