a slightly complex url shortener to learn backend with go using echo sqlc sqlite and templ while also learning the basics of docker and redis
register
login
dashboard
statistics
- to build for prod
docker compose up --build
- to build for dev
docker compose -f docker-compose.dev.yml up --build
- available routes
/register:POST/login:POST/logout:POST/verify/:id:POST/all:GET/:id:GET/delete/:id:GET/server/data/:id:GET/server/clicks/:id:GET/:POST/create:POST
- schema definitions
users:
- id INTEGER PRIMARY KEY
- username TEXT UNIQUE NOT NULL
- email TEXT UNIQUE NOT NULL
- hash_password TEXT NOT NULL
links:
- id INTEGER PRIMARY KEY
- short_id TEXT UNIQUE NOT NULL
- orig_url TEXT NOT NULL
- expiry DATETIME NOT NULL
- link_password INTEGER NOT NULL
- is_protected INTEGER NOT NULL DEFAULT 0
- user_id INTEGER NOT NULL REFERENCES accounts(id)
linkdata:
- id INTEGER PRIMARY KEY
- access_time DATETIME DEFAULT CURRENT_TIMESTAMP
- clicks INTEGER UNIQUE
- user_device TEXT NOT NULL
- link_id INTEGER UNIQUE NOT NULL REFERENCES links(id)
clickevents:
- id INTEGER PRIMARY KEY
- access_time DATETIME DEFAULT CURRENT_TIMESTAMP
- clicks INTEGER UNIQUE
- browser TEXT NOT NULL
- os TEXT NOT NULL
- link_id INTEGER UNIQUE NOT NULL REFERENCES links(id)
made with minima



