Skip to content

Piszmog/pathwise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pathwise

A modern job application tracking web application built with Go, templ, HTMX, and SQLite. Pathwise helps you organize and track your job search with features like status updates, notes, salary tracking, timeline views, and export capabilities.

Features

  • Application Tracking: Track where you've applied, position details, application dates, and current status
  • Status Management: Monitor applications through stages (applied, interviewing, offered, rejected, etc.)
  • Notes & Timeline: Add notes and view a complete timeline of your application history
  • Salary Tracking: Record salary ranges and currency for each position
  • Archive System: Archive old applications to keep your active list focused
  • Export Functionality: Export your data in various formats
  • Responsive Design: Works seamlessly on desktop and mobile devices
  • User Authentication: Secure login system with session management

Tech Stack

  • Backend: Go 1.24+ with standard library HTTP server
  • Frontend: templ templates with HTMX for dynamic interactions
  • Database: SQLite with sqlc for type-safe queries
  • Styling: Tailwind CSS processed with go-tw
  • Testing: Go testing with Playwright for E2E tests
  • Development: Air for hot reloading

Prerequisites

  • Go+ - Download Go
  • Air (optional, for development) - go install github.com/air-verse/air@latest
  • golangci-lint (optional, for linting) - Installation guide

Quick Start

  1. Clone the repository

    git clone https://github.com/Piszmog/pathwise.git
    cd pathwise
  2. Install dependencies

    go mod download
  3. Generate code and build assets

    go tool templ generate -path ./components
    go tool go-tw -i ./styles/input.css -o ./dist/assets/css/[email protected]
    go tool sqlc generate
  4. Run the application

    # Development with hot reload
    air
    
    # Or build and run manually
    go build -o ./tmp/main .
    ./tmp/main
  5. Open your browser Navigate to http://localhost:8080

Environment Variables

Variable Description Default
PORT Server port 8080
LOG_LEVEL Logging level (debug, info, warn, error) info
LOG_OUTPUT Log output (stdout or file path) stdout
DB_URL Database URL ./db.sqlite3
DB_TOKEN Database token (for remote databases) -
VERSION Application version -

Development

Commands

# Development server with hot reload
air

# Build application
go build -o ./tmp/main .

# Run tests
go test ./...

# Run E2E tests (requires Playwright)
go test -tags=e2e ./e2e/...

# Lint code
golangci-lint run

# Generate code (templates, CSS, SQL)
go tool templ generate -path ./components
go tool go-tw -i ./styles/input.css -o ./dist/assets/css/[email protected]
go tool sqlc generate

Project Structure

pathwise/
β”œβ”€β”€ components/          # Templ templates (.templ files)
β”œβ”€β”€ db/
β”‚   β”œβ”€β”€ migrations/      # Database schema migrations
β”‚   └── queries/         # SQL queries for sqlc
β”œβ”€β”€ dist/               # Static assets (CSS, JS, images)
β”œβ”€β”€ e2e/                # End-to-end tests
β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ handler/        # HTTP request handlers
β”‚   β”œβ”€β”€ middleware/     # HTTP middleware
β”‚   └── router/         # Route definitions
β”œβ”€β”€ styles/             # Tailwind CSS source files
β”œβ”€β”€ types/              # Domain types and business logic
β”œβ”€β”€ utils/              # Utility functions
└── main.go            # Application entry point

Database

Pathwise uses SQLite with migrations managed by golang-migrate. The database schema includes:

  • Users: Authentication and user management
  • Job Applications: Core application data with status tracking
  • Notes: Timeline notes for applications
  • Status History: Audit trail of status changes
  • Sessions: User session management

Code Generation

The project uses several code generation tools:

  • templ: Compiles .templ files to Go code for type-safe HTML templates
  • sqlc: Generates type-safe Go code from SQL queries
  • go-tw: Processes Tailwind CSS for styling

Testing

# Unit tests
go test ./...

# E2E tests (requires Playwright setup)
go test -tags=e2e ./e2e/...

# Test specific package
go test ./server/handler -run TestJobHandler

Deployment

Docker

# Build image
docker build -t pathwise .

# Run container
docker run -p 8080:8080 pathwise

Manual Deployment

  1. Build the application: go build -o pathwise .
  2. Set environment variables as needed
  3. Run the binary: ./pathwise

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and add tests
  4. Run tests and linting: go test ./... && golangci-lint run
  5. Commit your changes: git commit -am 'Add feature'
  6. Push to the branch: git push origin feature-name
  7. Submit a pull request

Related Projects

License

See LICENSE for details.

About

πŸ“ˆ Track and manage your job applications

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages