repositorypackage
0.0.0-20241127114610-b63d4dcaa896
Repository: https://github.com/twaananen/boulderlog.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
BoulderLog
BoulderLog is a web application for climbers to log and track their bouldering sessions.
Goals
- User can easily and quickly record each route between climbs
- User should see their progress visually
- Minimalist design, optimized for mobile use
- Possibly fun gamified elements
Features
- User authentication
- Log boulder attempts with grade, difficulty, and additional details
- View daily progress and statistics with visualizations
- Download boulder logs as CSV
- Dark mode support
Application Architecture
BoulderLog follows a layered architecture pattern:
-
Presentation Layer:
- Handlers (
handlers/
) handle HTTP requests and responses. - Templates (
components/
) render the UI using the templ templating engine.
- Handlers (
-
Service Layer (
services/
):- Contains business logic and coordinates between handlers and data access.
- Manages user authentication and boulder logging operations.
-
Data Access Layer (
db/
):- Implements data persistence using PostgreSQL.
- Provides an interface for data operations, allowing for easy swapping of storage mechanisms.
-
Model Layer (
models/
):- Defines data structures used throughout the application.
-
Utility Layer (
utils/
):- Contains shared utilities like logging and JWT management.
Technology Stack
- Go 1.22
- templ for HTML templating
- HTMX for dynamic content updates
- Tailwind CSS for styling
- PostgreSQL for data storage
- Docker for development and deployment
Getting Started
- Clone the repository
- Install dependencies:
go mod tidy
- Set up environment variables (create a
.env
file based on.env.example
) - Run the application in development mode with Docker:
docker compose up --build
The compose file will run the application in development mode with hot reloading.
It Generates Tailwind CSS: tailwindcss -i ./static/css/input.css -o ./static/css/tailwind.css --watch
And runs the application in development mode with air-verse/air
This also runs templ generate
to generate the templ templates into Go code.
License
This project is licensed under the MIT License - see the LICENSE file for details.