Photo Salon is a modern web app designed for photographers who want to organize photo clubs, host competitions, and conduct critiques in a structured and engaging way. Inspired by the rich history of art salons, where artists gathered to showcase and refine their work, Photo Salon brings this tradition into the digital age—creating a space where photographers can connect, learn, and grow through community-driven feedback and friendly competition.
- Inspired by Tradition – Reviving the spirit of classic art salons in a modern, digital space.
- Built for Photographers – A tool by photographers, for photographers, designed to enhance skills through critique and competition.
- Seamless & Intuitive – An easy-to-use platform to organize, compete, and connect in the photography world.
Assuming you already have Node, go, and Postgresql installed
NOTE: Use
brew list
to check your casks and and formulae already installed
Install golang-migrate cli, pnpm, buf, sqlc, and minio
brew install golang-migrate
brew install pnpm
brew install bufbuild/buf/buf
brew install sqlc
brew install minio/stable/minio
go mod tidy
go install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest
[ -n "$(go env GOBIN)" ] && export PATH="$(go env GOBIN):${PATH}"
[ -n "$(go env GOPATH)" ] && export PATH="$(go env GOPATH)/bin:${PATH}"
# .zshrc or .bash_profile or whatever
alias air='~/go/bin/air'
export PATH=$PATH:$(go env GOPATH)/bin
pnpm install --dir client
CREATE DATABASE bigapp;
GRANT ALL PRIVILEGES ON DATABASE bigapp TO admin;
GRANT ALL ON SCHEMA public TO admin;
Depending on the name you choose for the database you'll need to update the reference in 2 places:
# /server/.env
export POSTGRES_URL=postgresql://admin:admin@localhost:5432/<DB_NAME>?sslmode=disable
# Makefile
models:
pg_dump --schema-only <DB_NAME> > server/schema.sql
sqlc generate -f server/sqlc.yaml
- Sign-up with Mailtrap
- Navigate to email testing
- Add a project
- Add an inbox (Not sure if this happens automatically)
- Copy username and password for your project and set them to
SMTP_USERNAME
andSMTP_PASSWORD
respectively inside your/server/.env
export MINIO_CONFIG_ENV_FILE=/etc/default/minio
NOTE: depending on where you want your minio store to be you'll need to update the Makefile
minio:
minio server --console-address :9001 ./data
make minio
make migrate-up
make models
make codegen
make dev
You'll probably need to install a couple of tools before running the app:
- go -- Install steps
- pnpm -- Install steps
- postgreSQL -- Install steps
- psql -- should be included with postgreSQL installation
- bufbuild/buf/buf -- Install steps
- sqlc -- Install steps
- golang-migrate -- Install steps