/web-server

The Critter web server

Primary LanguageGoApache License 2.0Apache-2.0

🤖 Web Server

The Critter web server.

Architecture

Backend

  • Echo: High performance, extensible, minimalist Go web framework.
  • Ent: Simple, yet powerful ORM for modeling and querying data.

Frontend

  • HTMX: Access AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext.
  • Alpine.js: Rugged, minimal tool for composing behavior directly in your markup. Think of it like jQuery for the modern web. Plop in a script tag and get going.
  • Tailwind CSS: A utility-first CSS framework for rapidly building custom user interfaces.

Storage

  • PostgreSQL: The world's most advanced open source relational database.
  • Redis: In-memory data structure store, used as a database, cache, and message broker.

Local Development

Dependencies

Ensure the following are installed on your system:

Installation

git clone git@github.com:ahashim/server.git
cd server
make up

Note: You might need to run make up as root due to dockerd requiring access to unix domain sockets. More information on that in their documentation.

Initialization

From the project root directory:

make run

Access the application in your browser at localhost:8000.

Reset

make reset

This will wipe all the existing data & restart all containers.

Testing

make test

This command ensures that the tests from each package are not run in parallel.

This is required since many packages contain tests that connect to the test database which is dropped and recreated automatically for each package.

Clients

The following make commands are available to make it easy to connect to the database and cache.

  • make db: Connects to the primary database
  • make db-test: Connects to the test database
  • make cache: Connects to the primary cache
  • make cache-test: Connects to the test cache