A site for doing creative streaks of any kind. See it live: http://streak.club
Powered by:
The development environment has only been tested on Linux. It may be easiest to run the development environment within Docker.
Install the following dependencies:
markdown
executable.Clone and navigate into this repository:
git clone git@github.com:leafo/streak.club.git
cd streak.club
Run these commands to install dependencies and build:
luarocks build --only-deps
npm install
tup init
tup
Create the schema and run the migrations:
make init_schema
make migrate
Start the server:
lapis server
Now http://localhost:8080
should load.
If you edit any moon
, scss
, coffee
, etc. files then runtup
to
incrementally rebuild the changes. You can run tup monitor -a
in the
background to watch the filesystem to rebuild automatically when saving a file.
This site uses Busted for its tests:
make test_db
busted
The make test_db
command will copy the schema of the streakclub
local
database into a freshly created test database (named streakclub_test
). You'll
only need to run this command once and the beginning any any time the schema
has changed.
Note: Migrations don't need to be run on the test database because you'll run them on the development database then transfer the schema over to the test database using
make test_db
.
In production all files are stored on Google Cloud Storage. With no
configuration (default), files are stored on the file system using the storage
bucket mock provided by the cloud_storage
rock.
To configure cloud_storage
to talk to a live bucket make a file
secret/storage_bucket.moon
, it must return a bucket instance. It might look
something like:
-- secret/storage_bucket.moon
import OAuth from require "cloud_storage.oauth"
import CloudStorage from require "cloud_storage.google"
o = OAuth "NUMBER@developer.gserviceaccount.com", "PRIVATEKEY.pem"
CloudStorage(o, "PROJECT_ID")\bucket "BUCKET_NAME"
If you want to test sending emails you'll have to provide Mailgun
credentials. Create a file secret/email.moon
and make it look something like
this: (it must return a table of options)
{ -- secret/email.moon
key: "api:key-MY_KEY"
domain: "streak.club"
sender: "StreakClub <postmaster@streak.club>"
}
GPLv2 - Leaf Corcoran 2021