• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    Go
  • License
    BSD 2-Clause "Sim...
  • Created over 1 year ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

music storage locker

This is the source code for inter.tube, as seen on HN's "Stripe killed my music locker service, so I'm open sourcing it" (spoilers: they didn't kill it after all). inter.tube is an online music storage locker service with Subsonic API support.

Note that none of this code was originally intended to be seen by anyone else, so it's rough, but I hope it is useful to someone. I was inspired to open source it by the recent Apollo debacle.

Architecture

  • Database: DynamoDB
  • Storage: S3 or S3-compatible
  • Backend: Go, server-side rendering + SubSonic API support
  • Frontend: HTML and sprinkles of vanilla JS
  • Runs as a regular webserver or serverless via AWS Lambda (serverless docs coming soon)

Running it locally

Here's a way to run this easily, using DynamoDB local and MinIO.

Install these things:

# git clone this project, then from the root directory:
docker compose up -d
go build
./intertube --cfg=config.example.toml

Then access the site at http://localhost:8000.

When running in local mode, you can edit the HTML templates and they should reload without having to restart the server.

Running it on The Cloud

Docs coming soon :-)

Configuration

See config.example.toml. It matches the docker-compose.yml settings.

You can specify the config file with the --cfg file/path.toml command line option.

By default it looks at config.toml in the working directory.

Roadmap

  • inter.tube launch
  • Local dev mode
  • Align latest changes with production
  • Proper self-hosting guide
  • ???
  • Profit

Contributing

Contributions, bug reports, and feature suggestions are welcome.

Please make an issue before you make a PR for non-trivial things.

You can sponsor this project on GitHub or buy an inter.tube subscription on the official site to help me out as well.

More Repositories

1

null

reasonable handling of nullable values
Go
1,807
star
2

dynamo

expressive DynamoDB library for Go
Go
1,287
star
3

kami

web "framework" with context
Go
288
star
4

php

Prolog Home Page
HTML
64
star
5

mogi

fancy sql stubs
Go
60
star
6

trealla-js

Trealla Prolog for the web
TypeScript
37
star
7

db

shove database connections in your context (don't do this)
Go
36
star
8

worker-prolog

serverless Prolog for Cloudflare Workers
TypeScript
12
star
9

hakobiya

real-time helper
Go
12
star
10

bbs

generic message board protocol
Go
12
star
11

buildver

when 3 versions just isn't enough!!
Go
11
star
12

rediscache

little library for caching things in redis (via go-redis)
Go
10
star
13

predicates

various predicates for ichiban/prolog
Go
10
star
14

roguetactics

textual tactics game
Go
9
star
15

toki

SQL TIME type package
Go
8
star
16

pengine

pengines (SWI Prolog) client for Go
Go
7
star
17

kizuna.js

crazy global two-way data flow thing for react
JavaScript
6
star
18

hammertime

alternative WASI for wasmtime-go
Go
5
star
19

tesuto

HTTP testing glue
Go
4
star
20

baka

stupidly simple centralized peer list for groupcache
Go
3
star
21

i18n-example

html/template & go-i18n example
Go
3
star
22

into

coercion convenience for Go
Go
3
star
23

trealla-spin

Trealla Prolog templates for Spin
Prolog
3
star
24

relay

various gateways implementing the bbs protocol
Go
3
star
25

magic

go black magic
Go
2
star
26

bq

BigQuery thing
Go
2
star
27

limbo

message board software supporting the bbs protocol
Go
2
star
28

emojify

server-side rendered Twemoji for Go
Go
1
star
29

socket.js

old-fashioned ES5 WebSocket wrapper for the un-modern web
JavaScript
1
star
30

gredlib

tiny helper for embedding the gred redis server
Go
1
star
31

bbs-client

javascript bbs client
JavaScript
1
star
32

imbue

stores & retrieves files in the transparency of images
Java
1
star
33

localcache

local cache for DynamoDB
Go
1
star