Week 1: Core Functionality Development

2 minute read

Published:

Day 1-7: Project Setup and Initial Development

Day 1: Setting Up Hawkeye

13 July 2024 Hey everyone, on day one my basic aim is to research what I am going to pen down, jot down my feelings, and think about this. I am thinking of using FastAPI for the backend because I have never used it before, and I consider it should not be too heavy when it comes to backend development.

Frameworks and Tools

  • Backend: FastAPI for the API
  • Frontend: Streamlit (I chose Streamlit because it looks good, and for an MVP, I believe frontend aesthetics are not critical. We can focus on backend functionality and scale up to something more robust and visually appealing later on.)
  • Database: PostgreSQL or SQLite for storing video data and analysis results (I prefer PostgreSQL due to my familiarity with the Tortoise wrapper, which should facilitate better interaction. I still need to finalize the database design.)
  • Cloud Storage: AWS S3 (I can set up a local stack to mirror AWS S3)
  • Deployment: Docker for containerization, AWS EC2 (local stack supremacy)

Today, I made progress by setting up my GitHub repository, pushing my requirements, and establishing a basic file structure. I faced some challenges because I just bought a new MacBook Pro M3, so I had to install Python and everything from scratch, but it was fairly easy. I’ve also created a requirements.txt that will help in setting up and Dockerizing later. My next steps involve setting up the basic application.

Day 2: Trying My Hand On Detection

14 July 2024 This was day 2 of the project, and I was weirdly excited about it. I had to decide whether to try detecting people and tracking them or do other things that would make my life better in the long run, like setting up pre-commit hooks, maybe setting up a linter, and so on. But being a developer at heart, I went the detection route and set up basic detection for people and tracking them across the retail floor.

I am still looking for some model that does this better because right now I find myself stuck on how to make this MVP. My idea is simple:

If I can process a pre-recorded video in 80% of the time of the full video—say if the video is 10 minutes and I can process it in 8 minutes—I should be able to do this virtually live, which is my aim in the long run. Right now, I am having difficulties setting up Streamlit, sending it the tracking data and the video, and putting it all together. I think I’ll do it together; let’s see.

Today’s commit commit