Skip to content

urystem/1337b04rd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1337b04rd

Anonymous Imageboard for "Hackers"
A Go-powered web application that allows users to create threads, post comments, and share images anonymously. Built with Hexagonal Architecture, PostgreSQL, and S3-compatible storage.


Installation

# Clone the repository
git clone https://github.com/urystem/1337b04rd.git
cd 1337b04rd

# Run docker then use next command
docker-compose up --build

After app container is up go to the localhost:8081/catalog


Features

  • ✅ Anonymous posting (no registration required)
  • ✅ Create threads with images
  • ✅ Comment on posts and reply to other comments
  • ✅ Image upload using S3-compatible storage
  • ✅ PostgreSQL-based persistent storage for posts, comments, and sessions
  • ✅ Unique user avatars & names from Rick and Morty API
  • Hexagonal Architecture for clean separation of concerns
  • RESTful API backend in Go
  • Session management using secure HTTP cookies
  • ✅ Auto-archive posts:
    • Posts without comments → archive after 10 min
    • Posts with comments → archive 15 min after last comment
  • ✅ Logging with Go's log/slog
  • ✅ Minimum 20% test coverage

Tech Stack

  • Language: Go 1.21+
  • Database: PostgreSQL
  • Storage: S3-compatible (e.g., MinIO)
  • Frontend: HTML templates (6 views provided)
  • External API: Rick and Morty API
  • Architecture: Hexagonal (Ports & Adapters)

Architecture

The project follows Hexagonal Architecture to separate core business logic from external systems like databases, APIs, and the web layer.

Layers:

  • Domain Layer: Core logic (posts, comments, sessions)
  • Application Layer: Services and use cases
  • Adapters:
    • Database Adapter: PostgreSQL implementation
    • Storage Adapter: S3 image storage
    • External API Adapter: Rick and Morty avatar provider
    • HTTP Adapter: REST API and session handling

Benefits:

  • Testable
  • Maintainable
  • Flexible

Releases

No releases published

Packages

No packages published

Languages