The four repos
If you scroll far enough down my GitHub, past the projects that actually got users and past the college scripts, you find four repositories with the word template in the name. Two of them are from 2022. Two of them are from December 2024. They are Python_mongodb_template, SAAS-Template, Template, and Sublime_Build_Python_CP.
None of them are polished. One has a README that is only a title line. One is empty except for a .gitattributes file. The templates a person carries between projects say a lot about how that person works. They are the residue of decisions you got tired of making. When you find yourself starting the same file the same way for the fourth time, you either put it in a template repo or you keep re-deciding forever.
Sublime_Build_Python_CP: the oldest one, still my Ctrl+B
The oldest of the four is Sublime_Build_Python_CP, pushed in August 2022 while I was still at PSG. It contains one file, cppython.sublime-build, and a README that says only "Python-build-sublime-text". That is the whole repo.
The file is a Sublime Text build system. It defines two variants. The default one launches a new cmd window on Windows or xfce4-terminal on Linux, runs the Python file, and pauses so you can read the output. The second variant is named CP, for competitive programming, and runs the file with input.txt piped to stdin and output.txt piped from stdout. That is the whole thing.
I wrote it because I was solving problems on Codeforces and CodeChef and I wanted Ctrl+B to Just Work in two modes. Mode one, run this and let me see the print. Mode two, run this against the sample input file I pasted from the problem statement and dump it to output.txt so I can diff. I did not want to have to remember which mode I was in or edit shell commands every time I switched. So I put both in one file and made CP a variant I could pick from the command palette.
I still use it. Every time I install Sublime on a new laptop, I clone this repo into Packages/User and I am done. There is a typo I have known about for years and never fixed. The env key sets "PYTAHONIOENCODING" instead of "PYTHONIOENCODING". It has no effect. The typo is preserved. That is the template.
Python_mongodb_template: the honest lesson
Python_mongodb_template was created in July 2022. It has two files. A README with a # mongodb_template header and the line "A mongodb template which I use for my projects", and a main.py that is genuinely embarrassing to look at now.
The main.py connects to a MongoDB Atlas cluster, generates random 10-character strings, checks if a wistia media URL exists at each string, and inserts either the good URL or the bad string into two different fields of a single collection. It is a scraper masquerading as a template. And the connection string, admin username, and admin password are hardcoded into the file. In plaintext. On a public repo. The credentials are for a cluster called cluster0 on a free MongoDB Atlas tier, and I forgot they were there for almost a year before Atlas emailed me to say the cluster had been suspended for abuse.
I keep this repo public because I want to remember what carelessness with credentials looks like when you can still see the artifact. This is the reason CipherStack exists on my domain today. Every time I want to hardcode a key "just for a minute", I think about the wistia scraper and the free-tier Atlas that got mined. The template I actually reach for now is a two-line CipherStack vend call. The old one is a warning.
SAAS-Template: the December-2024 flatpack
SAAS-Template was created on December 29, 2024, four days after Christmas. I was starting a hackathon and I did not want to think about Vite plus Tailwind plus shadcn plus FastAPI plus a sqlite file plus a docker-compose ever again. Every hackathon starts the same way. Twenty minutes of npm create vite. Ten minutes of tailwind init. Fifteen minutes of pip installing FastAPI and passlib and figuring out the CORS middleware imports. Half an hour before I have written a line of the thing I came to build.
So on December 29 I made SAAS-Template. It has a backend directory with a FastAPI app.py that already imports CORS middleware, sets it to allow all origins with a comment saying "Update this in production", already opens a sqlite connection with row_factory set to sqlite3.Row, and already has three CREATE TABLE IF NOT EXISTS statements for a commands, command_parts, and variations schema. The schema is a scar from whatever project I was building at the time, and I have never deleted it. I clone the repo, rename the tables, keep the shape.
The frontend directory is a Vite React 18 setup with Tailwind, framer-motion, radix-ui dialog and label and slot primitives, lucide-react icons, recharts, react-markdown, and tailwind-merge. This is the shadcn stack, pre-wired. There is a jsconfig.json with the alias for @/components already set up. There is a components.json for shadcn's own config. There is a tailwind.config.js and a postcss.config.js and a vite.config.js.
There is a run.bat at the root that opens two cmd windows. One activates the Python venv, pip installs, and runs the FastAPI app. The other cds into frontend, runs npm install, and starts Vite. And there is a build.bat that runs vite build in one window and docker-compose build and up in another. The docker-compose.yml mounts both directories as volumes, exposes ports 5000 and 3000, and has a commented-out Postgres block that I have uncommented and re-commented probably fifteen times.
This is the flatpack. It saves me a full hour on every new hackathon. The last push to it was in September 2025, which means I have been maintaining it. It is the template I have edited the most.
Template: the empty one
The fourth repo is called just Template. It is private. It was created on December 29, 2024, seven minutes before SAAS-Template. It contains one file, .gitattributes, with the default line-ending rules GitHub inserts. Nothing else.
I created it, wrote a name, could not decide what it was supposed to be a template of, and stopped. Then I made SAAS-Template right after and got the actual thing done. The empty one has been sitting there for a year and a half. I keep it because it is honest. Not every idea makes it out of the create-repo dialog.
What the four say together
Four repos, four kinds of decisions I got tired of making. A build shortcut for a text editor. A scraper skeleton that taught me about secrets. A full-stack flatpack for hackathons. An empty placeholder that reminds me starting something is not the same as building it. The Sublime build has a typo I will not fix. The mongodb template has credentials I will not delete. The SAAS template has a commands table I will not rename. Those four artifacts, kept as they are, tell me more about how I work than any single finished project would.