Building a small website in one day: thisweekingov.org
February 9, 2025
With modern AI software tools like Cursor, Claude etc. and modern infrastructure like Render, Modal etc. it’s amazing how fast a single person can build a small website.
Last Saturday, I felt motivated and built https://thisweekingov.org in one day. In this post I’ll go over some of the decisions I made.
At the time of writing this, the website is pretty simple. It lists the executive orders signed by the president each week.
It also allows you to click into a specific order to get an AI generated summary as well as finding the original document.
Infrastructure & Tools
- Cursor for the IDE (I don’t use code generation, but I find the Tab autocomplete helpful)
- TablePlus GUI for Postgres. Incredible tool for migrations and working with the data. Saved me a bunch of time.
- Anthropic’s Claude for asking software/product questions (don’t use for code generation, personally I don’t find code generation that useful in 95% of cases)
- Render for the web server and Postgres database. It was all quite easy to setup. The docs are very helpful and dashboard is fast. I hooked up my custom domain name easily.
- Cloudflare for the custom domain name (I already had others hosted on Cloudflare so felt easy to put in one place)
- Modal My employer, so maybe I’m biased, but I think it’s the easiest way to do serverless functions on the internet.
- Svelte/SvelteKit for the frontend — it’s super concise framework and easy to use.
- Tailwind CSS standard, nothing fancy.
- Physical notebook for when I’m stuck or want to brainstorm I find jotting down notes on paper helps me think clearly.
I was already familiar with most of these tools. The two new tools were TablePlus and Render. Both were quite easy to get started with and saved me a lot of time.
I also find it interesting that I didn’t use StackOverflow once during this process. I still used Google, but I usually found answers on reference docs or blog posts. I couldn’t say the same a few years ago.
Getting the data
I started with executive orders because this seemed like the easiest data to get first. The Federal Register organizes JSON data for all the recent presidents. Given that it’s already structured, it’s quite easy to parse and throw into a database.
I created a cron job using Modal which runs every 12 hours and fetches and stores the latest executive orders. It’s a single python decorator to set this up.
import modal
app = modal.App("this-week-in-gov")
@app.function(schedule=modal.Period(hours=12), image=image, secrets=[modal.Secret.from_name("my-anthropic-secret"), modal.Secret.from_name("postgres-secret")])
def populate_latest_orders():
crawl.local()
Instead of waiting 12 hours to test my function, I trigger runs manually from the dashboard. The dashboard also has logs and other metrics, which was useful for debugging.
Summarizing the data
I wanted to keep v1 as simple as possible, so I just parse data from the Federal Register and send it to the Anthropic API for an AI generated summary. These API calls happen in the same Modal function that I fetch my data in. Python’s Instructor library was convenient to get structured output from the API response, which I then inserted into the database. After this step, I could get an AI generated summary or other metadata based on the executive order #.
Website
I stuck to two colors (apart from black & white): Old Glory Blue and Old Glory Red. The same colors as on the American flag. When I needed some variety, I used opacity to change up the colors.
With Tailwind CSS it’d be something like text-old-glory-blue/80
.
For fonts I asked Claude what would be good choices to fit the theme of the website.
I used an AI logo generator service to generate the favicon. I can’t remember which one now, I spent like a total of five minutes on it. Figured I could always change it later.
Recently I’ve spent a lot of time working with Svelte so the two basic views on the website were quite easy to implement. With flexbox/grid and some Tailwind classes it probably took me 2-3 hours to build the two pages.
Whenever I had a design/product decision I wasn’t sure about, I’d just ask Claude. For example, I wasn’t sure what day to start each week on: Monday or Sunday. Apparently Sunday is standard in the US whereas the World typically uses Monday. Given this is a site for following the U.S. government, I felt Sunday was fitting.
Final Thoughts
- Using tools I already knew dramatically sped up the process. This is obvious I know, but in the past I mostly used side projects to learn new things. It’s been awhile since I could plan everything out in my head without much assistance.
- Claude+Google usually got me unstuck in about 15 minutes if I ever ran into an issue. Claude was helpful, but I think dev tools UX/UI have gotten a lot more intuitive over the years.
- I was able to move fast by pushing for an MVP that I could share at the end of the day. I cut out anything that felt like it was larger in scope. If I was stuck on something for too long, I’d find another way.
I’m pretty happy with the first iteration. I feel like I have a solid foundation to build on top of. Getting started was a sprint, but now my mindset is that the next iterations will be a marathon.