chords

command module
v0.0.0-...-718afa2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2024 License: AGPL-3.0 Imports: 6 Imported by: 0

README

Jordy's chordies

This is a web app showing chords that I've collected / worked out over the years. You can find the live app at https://chords.fly.dev/.

In a bit more detail...

The app consists of several pieces.

  • The centrepiece is an API server, which provides an API to get, add, update and delete chords.
  • A frontend giving a nice interface to find and view the chords. This also includes the ability to transpose chords (reusing code from my chord-transposer project).
  • A persistent file system which the API server uses to store the chords and their metadata.

All of the above are hosted on Fly.io. The API server and frontend server are both written in Go using the standard net/http library.

I've also written a command-line interface in Go, which I privately use to add and update chords.

The structure of this repository

  • docs: Markdown specs and explanatory notes. Read these if you'd like to learn more about the inner workings of the app.
  • src: source code
    • client: API client, used by the CLI and frontend
    • cmd: CLI - I use this to update the chords database
    • dblayer: core data structures and database wrappers, used by the client and server
    • server: the API and frontend server
  • tests: Go integration tests for the API server.
  • main.go: main entry point, runs the API/frontend server.

Motivation

I'm an amateur musician, and enjoy covering pop/rock songs. I've often found errors in chord sheets available online (including popular websites like Ultimate Guitar). This led me to start working out chords myself, and over the years, I've amassed quite a collection.

Historically, I've stored these using a notes app like Google Keep. There are plenty of issues with this approach:

  • Google Keep's only organisational structure is using "labels" - I can't sort/filter my chords by artist/album/etc.
  • I often add ASCII guitar tabs to my chord sheets, to notate riffs. These really have to be rendered in a monospace font to ensure a nice layout and consistency. Of course, Google Keep doesn't use a monospace font.
  • It's difficult to share my chords with others - I have to manually add them as a "collaborator" to each note.

Eventually, these concerns led me to decide that I'd be better off building my own website for my chords.

License

This project is open-source, and licensed under the terms of the GNU Affero General Public License.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
src
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL