Dev Log #1 - Starting a New Project and Working with AI

DevLog

Dev Log #1 - Starting a New Project and Working with AI

The Motivation

Hello World! This is the first of hopefully many blog posts where I talk about my learning experiences with just development in general. Though I've been developing for almost a decade now (time flies!) I still feel like there's an endless well of knowledge I want to learn not just professionally but also for personal growth. This year is also the year I decided to be more vocal in my achievements (and failures) which is why I've decided to start writing blog posts more often. Hopefully, someone would be able to gain some knowledge from my experience, or at least get a good read while scrolling through the endless pit of internet content.

A New Project - Based on an Old One

So for some context, I have a group of co-workers who are very vocal about their investment strategies. Basically we like to boast our gains and argue about strategies like "this stock is a must buy" or "you're basically printing money with this strat!". I for one consider myself to be a passive and therefore boring investor but recently the group decided to put their money where their mouth is and decided to create a fantasy league based on paper accounts. Now for those unfamiliar with fantasy leagues in sports at the start of the season people would get together and mock draft players. The person at the end who wins gets the prize, from prize money collected from a pool to a cool looking belt. The loser? A certain punishment is decided. My favorite is the Wafflehouse challenge where you have to stay there for 24 hours or eat one pancake to shave off two hours.

In any case, we decided to have a league where people will have a paper account with a set starting amount (100k USD in this case). The rules are as follows:

  • You can trade in any way you like (Crypto, Stocks, ETFs, etc)
  • Trading stops at a certain date
  • If you lost money, you lose any chance of getting money from the pool
  • The percentage of the pool of rewards is proportionate to who made more money

After the rules were set, we found a pretty-decent market API which allowed for trading and user account information. Alpaca allows a 200 request per minute request rate for paper accounts, and they have extensive documentation on its usage.

Given these new developments, I was definitely interested, more for the API than anything. Already I saw people building tools such as a CLI tool using AI to run trading algorithms or a simple leaderboard using google scripts. In my mind, I wanted to start with creating a simple leaderboard website. This would fill my need of wanting to code cool things in my free time and a chance to actually try providing a service to users (even if they're my co-workers).

The Design

For this website, I wanted to focus on these requirements:

  • Must be able to list the user's performance and porftolio
  • Must be able to list other users' performance and portfolio - This is to allow for users to compare portfolios and strategy (and promote more trash talk!)
  • Must keep the portfolio up-to-date with "real time" data
  • Must be able to list trade activities of users
  • Must allow for users to comment on these trades (again more trash talk!)

So simple, right? Basically all the data is available via the Alpaca API. All I need to do is hook it up to my server via and internal client and I'd be able to make queries. I'd also like to mention that the user allows accessing their data via their own personal API keys, with the hope that I'd be able to implement OAuth in a future update.

This is what the initial website design I asked Claude to come up with:

fantasytrading.png

Overall pretty clean! For now I just needed the functionality to work, and there was a lot to think about, so I started on setting up.

Building the foundation

Last year my big project was the trip tracker app, where users would log their flight trips and even experiences. Though a pretty basic application, it helped me learn a lot about the GOTH stack (Golang, Templ, HTMX). I personally love this stack because it allows a simple interaction with the backend and the frontend and and simplifies page updates without JS fluff. Even this website was built using HTMX! Thus, it was natural for me to continue what I know to quicken the development process.

So to start, here's what I had:

 1fantasy-trading-platform/
 2├── main.go                # App entry point + HTTP server
 3├── .air.toml              # Air configuration
 4├── Dockerfile             # Container build
 5├── compose.yaml           # Local dev services
 6├── go.mod / go.sum        # Dependencies
 7├── tailwind.config.js     # Styling config
 8 9├── internal/
10│   ├── web/               # HTTP layer
11│   │   ├── handlers/      # Page & API handlers
12│   │   │   ├── dashboard.go
13│   │   │   ├── portfolio.go
14│   │   │   ├── leaderboard.go
15│   │   │   ├── activity.go
16│   │   │   └── user.go
17│   │   │
18│   │   └── middleware/    # Cross-cutting HTTP concerns
19│   │       ├── auth.go
20│   │       ├── logging.go
21│   │       └── security.go
22│   │
23│   ├── auth/              # OAuth & sessions
24│   │   ├── oauth.go       # OAuth config & flow
25│   │   └── sessions.go
26│   │
27│   ├── trading/           # External trading provider (Alpaca)
28│   │   ├── client.go
29│   │   ├── account.go
30│   │   ├── portfolio.go
31│   │   ├── positions.go
32│   │   └── activity.go
33│   │
34│   ├── store/             # Database access layer
35│   │   ├── db.go
36│   │   ├── users.go
37│   │   ├── portfolios.go
38│   │   ├── positions.go
39│   │   └── activity.go
40│   │
41│   └── sync/              # Background jobs
42│       └── scheduler.go
4344├── templates/             # Server-rendered UI (Templ)
45│   ├── layout.templ
46│   ├── components.templ
47│   ├── dashboard.templ
48│   ├── portfolio.templ
49│   ├── leaderboard.templ
50│   ├── activity.templ
51│   └── user.templ
5253└── static/                # Frontend assets
54    ├── css/
55    ├── js/
56    └── images/
57

For those familiar with go projects, a lot of this should be natural to you. I have the main entrypoint main.go built and run using a live-reloading utility tool called air. I decided to use the http library golang provides instead of going with a framework. I find it to do the job well enough without the need to install yet another dependency.

Layer Breakdown

Entrypoint

1main.go

Bootstraps the HTTP server, registers routes, middleware, and start background sync jobs

Web Layer

1handlers/ -> request -> response
2middleware/ -> auth, logging, security

The handlers follow a file patter of {PUT|POST|GET|DELETE}{COMPONENT_NAME}.go (ex: getdashboard.go). That's where most of the server-side logic comes in. They also handle working with the database and trading API and server the htmx components to the frontend.

The middleware is just like what you would see in any other website, with auth for site login/logout and session management, logging for monitoring, and even csp middleware handling.

Trading Integration, Data Store

1internal/trading
2internal/store

Trading is obviously the Alpaca API interface, with a single client making calls. The store holds all SQL queries needed to run the application, including user information like nicknames. For my database I like to use SQLITE since it's small, fast, does the job, and is easily deployable in VPS instances.

Templates + HTMX

1templates\ + static\

So I'm not much of a UI guy and way too lazy to be writing a lot of this html myself. The one thing I found Claude to be good at is write HTML, so I let it create the html and I fill in the components which require htmx integration such as page updates.

Overall, this structure gives me a good template for any website I'm making or will develop. I'm sure there are better or more popular solutions out there though for now this does the job with the scale which I'm imagining for this kind of project.

Deployment

For those who actually read the tree diagram, you can see i have a compose.yaml file and a Dockerfile. I'm currently renting a VPS via Hostinger and using that for all of my websites. I believe that journey of itself deserves its own devlog. I learned a ton from that experience.

What's Next

The website has already been deployed and used by some in the group. The only reason I haven't exposed it to the world yet is because I don't have groups setup. Right now, everyone is expected to be in the same one league. My next step would be figuring that out so that this one site can host many fantasy trading groups.

My Thoughts On This Project with AI

Big disclaimer, I did use AI to build parts of this project (Oh No!). Lately, I've been using it more and more for both planning and parts of the implementation process for certain projects. I even tried vibe-coding a TUI application just to see how it would perform it did quite good!.

This recent project, however, got me thinking the impact of AI and how it affects my personal developer experience. Overall, I find it to be a double-edged sword. It's really good to help you start projects and even through a lot of the developer cycle. However, if one relies too much on it, there's the danger that you don't understand your own project. That makes the project more prone to critical bugs which would be much harder to find and handle.

There's also the psychological aspect of vibe coding which I just can't stand. I started to really use it during the fall months of 2025. During that time, I did feel like I was doing good work, but when I try to understand or create my own code, I realized my own programming skills started to deteriorate. This lead me to believe at least in my case programming is like a hard skill in the sense that if you stop practicing you start to lose that skill. Why try to learn more about a language or framework when I can just ask Claude to fix the issue? What's the point of architecting a solution when I can ask ChatGPT to write me a comprehensive report with a full diagram and a 10-week roadmap? Using AI really felt like I was losing a lot of critical skills which are essential for me to succeed as a developer.

Therefore, I decided to start avoiding using AI tools for any type of developer process which isn't something like simple HTML for design or README documentation. It's also another reason I started to write blogs, I want to start putting good effort into my projects. I believe this won't just help me grow as a developer, it'll also help make better projects since I'll be in charge again of my own codebase. AI won't take over my developer experience. Instead, it'll work more as a happy helper on the sidelines pushing me to grow and learn. I believe for now I'll just have it focus on planning and researching so I can get ideas through the front door.

Final Thoughts

In the end, I'm excited for the new year and the opportunities it's already presenting. Hopefully the next blog post will be on updates on the fantasy trading project, as well as some notes on how to bring a project into production. I don't know if I'll be talking about AI much, again I'm hoping to use less of it this year for my personal projects.

If you've read up to this point, thank you so much! It means a lot. I hope you have gained something from my first rant. :)