.github | ||
.vscode | ||
client | ||
.gitignore | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
LICENSE | ||
README.md | ||
renovate.json |
Drift
Drift is a self-hostable Gist clone. It's in beta, but is completely functional.
You can try a demo at https://drift.lol. The demo is built on main but has no database, so files and accounts can be wiped at any time.
If you want to contribute, need support, or want to stay updated, you can join the IRC channel at #drift on irc.libera.chat or reach me on twitter. If you don't have an IRC client yet, you can use a webclient here.
Contents:
Setup
Development
In the client/
directory, run pnpm i
. If you need pnpm
, you can download it here.
You can run pnpm dev
in client
for file watching and live reloading.
To work with prisma, you can interface with prisma via pnpm prisma
.
Production
pnpm build
in client/
will produce production code. pnpm start
will run the Next.js server.
Environment Variables
You can change these to your liking.
client/.env
:
DRIFT_URL
: the URL of the drift instance.DATABASE_URL
: the URL to connect to your postgres instance. For example,postgresql://user:password@localhost:5432/drift
.WELCOME_CONTENT
: a markdown string that's rendered on the home pageWELCOME_TITLE
: the file title for the post on the homepage.ENABLE_ADMIN
: the first account created is an administrator accountREGISTRATION_PASSWORD
: the password required to register an account. If not set, no password is required.NODE_ENV
: defaults to development, can beproduction
GITHUB_CLIENT_ID
: the client ID for GitHub OAuthGITHUB_CLIENT_SECRET
: the client secret for GitHub OAuthNEXTAUTH_URL
: the URL of the drift instance.
Running with pm2
It's easy to start Drift using pm2.
First, add the .env
file to client/
with your values (see the above section for the required options).
Then, use the following command to start the client :
cd client && pnpm build && pm2 start pnpm --name drift-client --interpreter bash -- start
Refer to pm2's docs or pm2 help
for more information.
Running with Docker
Current status
Drift is a work in progress. Below is a (rough) list of completed and envisioned features. If you want to help address any of them, please let me know regardless of your experience and I'll be happy to assist.
- creating and sharing private, public, unlisted posts
- syntax highlighting (detected by file extension)
- multiple files per post
- uploading files via drag-and-drop
- expiring posts
- responsive UI
- user auth
- SSO via HTTP header (Issue: #11)
- downloading files (individually and entire posts)
- password protected posts
- postgres database
- administrator account / settings
- docker-compose (PRs: #13, #75)
- publish docker builds
- user settings
- works enough with JavaScript disabled
- in-depth documentation
- customizable homepage, so the demo can exist as-is but other instances can be built from the same source. Environment variable for the file contents?
- fleshed out API
- Swappable database backends
- More OAuth providers