Software Engineer

The "Awsom" Project

For the past few years I've been working on a real estate search app called "Awsom". The main goal of the project is to use it as a means to get better with Next.js, Typescript, Node and other libraries, as well as to demonstrate the kind of app I have experience working on. I'm hosting the app on Vercel, the database is hosted on MongoDB Atlas and I'm using ImageKit to host my images.

The Awsom website
The awsome.homes website.

Right now the app only includes fake listing data for Seattle neighborhoods. Generating this fake data was actually a whole learning experience in and of itself. I was able to get some Seattle neighborhood boundary data for free through the city's website and use it to take advantage of MongoDBs built-in geospatial search capabilities. However, the experience with Mongo as a geospatial database wasn't as seamless as one would like. I ended up having to supplement some functionality with Turf.js (which is a great library). Otherwise, it worked well enough for a rapid development paradigm.

Iterating through continuous improvement has actually been a theme of this project. I originally started out with an app written with Vue that was much closer to the app I worked on professionally. After that, I pivoted to rewriting everything in Next.js with Typescript. That version is the one that is currently being used for the awsom.homes site.

I've recently began a third iteration. This latest version is no longer a monolith. I have a separate real estate listing search service that uses Koa. For the frontend, I chose a simpler approach, using Tailwind with Shadcn for components, rather than writing everything from scratch, as I had previously done.

I've also wanted to try going back to using Postgres with PostGIS, which is what I had used for work. I put together most of the necessary database tables and queries needed for the listing service but haven't gotten around to rewiting the service with this yet.

Betterboxd

Lately I've been working on a clone of Letterboxd called "Betterboxd". Betterboxd is written in Ruby on Rails 8. The main goal of the project is to test out building a full stack app the Rails way, without adding dependencies like React, etc. I was also interested in trying out the new authentication provided by the Rails 8 authentication generator.

So far I've been able to accomplish a lot by just using ERB templates with some Stimulus sprinkled in, but I really missing working with components. It's hard to go back to templates and partials after having experienced the benefits of components. The authenticaion code generated by the new authentication generator is surpisingly useable, although I'm not sure that I would trust it for a large scale application in production.

The Betterboxd website
The Betterboxd landing page when the user is logged out.

This Website

It's not the largest project in the world but putting together this site has been a fun thing to work on. I've learned more about how to optimize a site for SEO with Next.js. I've also spent some time learning the Motion animation library as well as the Motion-Primitives UI kit.

©  Adam Griffin