Building and Sharing #4

Femi Ojo
3 min readMar 18, 2021

It's been a week since I started working on my latest project. I just call it the Content Collector but I’m not settled on the name. This is the first solo project I’m building with the expectation of a small number of users. I’m building the frontend using React and the backend using Django with a PostgreSQL database. Basically, the app lets users create collections that store related bits of content from anywhere on the internet. They can store this privately or publically display their collections for anyone to see. For example, say you kept getting asked for good resources to learn Java programming, make a list and share the link on your other social platforms. Future iterations may involve building out social/community features that allow users to follow and subscribe to other people’s collections or profiles and also to collaboratively create collections.

Due to the nature of the application, I actually believe a non-relational database is better suited but because I want to focus on getting a usable product out and I’m most comfortable with SQL standard databases, at the moment, I chose to stick with Postgres. If I decide to progress the project further I will definitely refactor to a non-rel DB, I’m currently leaning towards Neo4j because the nature of the application logically suits a graph database system but MongoDB could also work. Django doesn’t natively provide the mapping services for these databases so the setup work would also be a bit more time-consuming but I have found well-supported libraries that can help to smoothen the process.

Progress

So far I have written the necessary functions for full CRUD operations on the Collection model. The frontend accesses these operations through APIs built using Django REST Framework. This was also the first time I implemented Test-Driven Development (TDD) principles and I instantly recognised why testing can be so useful and save you time in the long run. What I found interesting was I recognised many of my tests were things I would often run a number of times throughout development to see if they were working but I would have to set up the state of the environment beforehand and that state would continue to exist after it was needed. Writing the tests first forced me to clearly define the outcomes (expected behaviour) whilst saving me time because the Django testing library automatically sets up and destroys the testing environment allowing for cleaner and more independent tests.

Next

Next, I’ll be working on adding Content to the Collections and making sure the necessary APIs are well tested before building out the user interface.

Follow the progress in the GitHub Repo!

--

--