Crafting My Side Project: A New Developer's Journey

Photo by Andrew Neel on Unsplash

Crafting My Side Project: A New Developer's Journey

How it came about

Seeing as this is my first time publishing a blog on the internet, and also my first time publicly discussing my side project - I'm not exactly sure how to start.

I think the best place would be to start with the name, and the why. The project originally started as Town Square, but I've since changed the name to LegisLink (thank you ChatGPT) due to some currently existing Town Squares on the Apple App Store. So, why LegisLink?

Well, I decided when I graduated from university in May of 2023 that I wanted to try building a mobile app. At first, I wanted to build an alarm-clock app that would donate money to a cause that a user doesn't like if they didn't turn it off in time. After some careful thought, discussion with friends and a review of Apple's monetization policies - it became clear to me that the development and actual release of such an app would be tenuous at best. Okay, back to the drawing board.

Something we are always told as up-and-coming developers is that personal projects should follow a 2-point guideline:

  1. Solve a problem

  2. Are part of some sort of niche

with these two ideas in mind, I settled on the initial conception for what would become LegisLink. I wanted to make information (especially juicy information) about our elected officials easily available to everyone. From there, my mind was set on getting some sort of MVP of this project done, natively on iOS using Swift. The rationale for using Swift is simply because I had found enjoyment in using it for projects in the past, and that I wanted to learn more about native mobile development.


A theoretical, finished version of this app should have several key features:

  1. A user could input their address, and be given accurate and useful information about their elected officials.

  2. The information about their elected officials would encompass, at least initially, a user's two Senators and their Representative.

  3. Amongst the information about their officials, donor/contributor information must be included.

  4. Push-notifications for upcoming or important legislation and/or consequential votes

  5. Implement responsible AI (I know, I can't help myself) that can take large and confusingly written legislation and provide accurate and succinct summaries that the average person can understand

  6. In my most wild conception of the project, there would be some social media-esque feature that would allow people to comment on legislation. I'm still unsure about that one, but it is worth mentioning.

As of writing this, I've been working solely on getting the most important feature - accurate information about legislators - working. Thus far, I've had a lot of fun and learning out of hacking away at the first three bullet points.

All of that being said, I'd like to actually show you what the app looks like in its current state. There's of course the caveat that I am not a UI/UX designer by any means, but the goal here is not to have a beautiful app, but an app that has a minimum level of functionality.


It's real I swear

With out further adieu, here are a handful of screenshots showing the most functional parts of LegisLink currently:

  1. "My Representatives"

This is the first screen (after logging in) a user sees: a list of their federally elected officials. In this example, I am using a test user with an address in New Jersey. The app correctly sent the address to the Google Civic Information API, and after a number of processes retrieved the elected officials and a lot of associated data for the address.

  1. Cory Booker

    Much of the data on this page comes from the Google Civic Information API, but now that I have used several, I may try to make this data a bit more comprehensive or clean.

  2. Cory Booker, part 2

    The bottom 3 buttons are currently where the magic happens.

  3. "Top Contributors"

    This data currently comes from the OpenSecrets API.

  4. "Committees"

    This data comes from the OpenStates API.

  5. "Sponsored Legislation per Term in Congress"

    For this feature, I had to solve the problem of displaying potentially thousands of pieces of legislation. Cory Booker has sponsored 677 himself, but there are other officials who have been in office for much longer and therefore have much more. As it turns out, legislation is sorted into over a dozen policy areas on the Congress.gov website and API. Thus, I figured if I trimmed down the lists by a person's term in congress, and then again by the policy area, the amount of legislation would be much more manageable. And it was!

    And last but not least, here is what one of these individual sponsored legislations looks like!

    Oddly enough, including the original text is not a part of the API responses from Congress.gov, so I may have to figure out what that's about in the future.

And that is where the app is currently. I'm very proud of how far I've come, but there is (as always) much more to do.


Where I'm at now

From the screenshots and details above, I hope I've made the case that that the app is in fact, real. I even forked over the $99 ($105 with taxes!!) needed for the Apple Developer Program so I could start putting together a sensible CI/CD pipeline with Xcode Cloud and eventually make the app available for testing. I find DevOps practices and CI/CD very interesting so I'm excited to start trying my hand at my own pipelines. At present, I'm not ruling out using a unified CI/CD service (like BitRise) for both the iOS and Android versions of the app, but that's content for a blog post that I haven't written (yet!).

Now that I've started this blog, I plan to start writing about what I'm learning as a new developer with this project, and the intricacies of software development within the landscape of data and American politics. Going forward I'll be updating this page with unique bugs or functions in the app, plans for future features, design ideas, and any fun rabbit holes that I dove into when trying to tie this thing together.

So, if you're interested in reading about a new developer build an app from scratch and solve the problems necessary to ship the damn thing, follow my blog here and you'll be kept up to date on the journey! The next blog post will be a deep dive into my usage of the Google Civic Information API.