forked from mirrors/pronouns.cc
Website to share your preferred names and pronouns
ccd546759b
The shared models will eventually contain every field in the database, but prns.cc only needs the fields they currently have, so to cut down on memory usage it shouldn't use the shared models. |
||
---|---|---|
backend | ||
docs | ||
frontend | ||
prns | ||
pronouns | ||
scripts | ||
.env.example | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
Makefile | ||
openapi.yaml | ||
README.md | ||
update.sh |
pronouns.cc
A work-in-progress site to share your names, pronouns, and other preferred terms.
Stack
- API server is written in Go with the chi router
- Persistent data is stored in PostgreSQL
- Temporary data is stored in Redis
- The frontend is written in TypeScript with Svelte, using SvelteKit for server-side rendering
- Avatars are stored in S3-compatible storage (MinIO for development)
Development
When working on the frontend, run the API and then use pnpm dev
in frontend/
for hot reloading.
Note that the Vite dev server assumes that the backend listens on :8080
and MinIO listens on :9000
.
If these ports differ on your development environment, you must edit vite.config.ts
.
Development
Requirements:
- Go 1.18 or later
- PostgreSQL (any currently supported version should work)
- Redis 6.0 or later
- Node.js (latest version)
- MinIO if using avatars, flags, or data exports (not required otherwise)
Setup
- Create a PostgreSQL user and database (the user should own the database).
For example:create user pronouns with password 'password'; create database pronouns with owner pronouns;
- Copy
.env.example
in the repository root to a new file named.env
and fill out the required options. - Run
go run -v . database migrate
to initialize the database, then optionallygo run -v . database seed
to insert a test user. - Run
go run -v . web
to run the backend. - Copy
frontend/.env.example
intofrontend/.env
and tweak as necessary. - cd into the
frontend
directory and runpnpm dev
to run the frontend.
See docs/production.md
for more information about keys in the backend and frontend .env
files.
License
Copyright (C) 2022 Sam <u1f320>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.