Skip to content

trkl-dev/drupico-public

Repository files navigation

Drupico

This project hosts the code for the Drupico web application. It was in production for a period of time, running on AWS, with Terraform found here.

The goal of this project was to build an application without Go libraries for software developers to be able to share and store URLs they found useful for their job, entertaining, etc. within their team. Reading lists can be used to collect groups of URLs, with the intention to enable teams to create lists like 'onboarding' so that new team members would have a specified set of resources to get up to speed on the tooling, technology, and ways of working relevant to that team. A voting system was added to for a reddit-style way of surfacing high quality URLs. URLs can be saved, shared, etc. There is also a slack integration for easily saving URLs directly from Slack.

No external Go libraries

The goal for the project was to keep the usage of Go libraries to 0. Reducing the usage of external dependencies is something that Go makes much easier with its later updates and extensive std lib. In addition, reducing dependencies allows for more performant code, and fewer resources required for running the application when deployed in production.

Technology

The application is free from Go dependencies with 2 exceptions. The first being PostgreSQL drivers, which re-implementing
from scratch would have contradicted the spirit of the project. The other exception is the use of the x/crypto which provides the Argon2 password hashing algorithm. The x repositories are part of the extended Go std lib, and the value of a high quality password hashing library was more valuable than the security costs of using something of a lower standard.

In addition to the above, the app uses HTMX and TailwindCSS, to create a snappy, SPA-like, mobile responsive feel, with a consistent, easy to use set of CSS, as well as dark/light themes.

Some of the developer tooling includes air, sqlc, go-migrate, direnv and Nix Flakes.

DB Migrations

Using go-migrate, the following command can be used to migrate the DB

migrate -source=db/migrations -database=$DB_URL up

Features

Ensure the following features are present in the features table. They can be either true or false and the application will behave accordingly. These were set up to enable active development while the application was in production.

	signups
	contact_page
	blog
	login

Notes

This application has served as a testing ground for learning, experimenting, trying out different architectures, and ways of doing things, etc. As such, it does not always adhere to best practices, or even necessarily consistent practices and should not be treated as such.

About

Public repository for sharing Drupico

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published