# MiniWeb

## Abstract

This is a biased little project, that tries to establish a basic infrastructure to build a webservice.

The main objective is to build a basic template one can quickly start developing a service with

The project aims to implement approaches as *simple straight-forward* over *generalized multi-purpose*.

It assumes that you clone the code, and adjust it from there, without keeping up to date.
So this is not thought of being a framework.

## Choices

### Philosophies

 - Semantic over Mnemonic
 - As flat HTML as possible

### On the Backend

 - `axum` as webserver framework
 - `minijinja` as template renderer
 - `sea-orm` as database framework

### On the Frontend

 - `markdown.css` to provide out of the box CSS for markdown
 - `hyperscript` for light weight event scripting
 - `htmx` for service interaction
 - `Fomantic-UI` as default CSS framework (once Semantic)

## Features

### The aims of the project for now are:
 - [x] Template Rendering with Hot-Reload
 - [x] Static-File Serving
 - [x] Logging
 - [x] 404 Handler
 - [ ] 500 Handler
 - [ ] Media File Serving
 - [ ] Admin Site with Registry
 - [ ] Storage based tools (for files and cloud)
 - [ ] Database
 - [ ] Redis / KV Store

### Future Ideas:

 - Direct Markdown Sites as wikiserve with the storage tools
 - `static-image` and `media-image` Service for automatic thumbnails
 - User and Role Implementation
 - Event-Bus link to RabbitMQ

### Windows 10

Env if using MINGW64;

```shell
export PATH=$PATH:"/c/Program Files/PostgreSQL/12/bin"
export PQ_LIB_DIR="C:\Program Files\PostgreSQL\12\lib"
```

Install a postgres:
`choco install postgresql12 --force --params '/Password:root'`


### Mugshot

![Mugshot of Admin](./docs/mugshot.png)


### Project Structure

#### Root Folders

 - docker: all about docker, atm. database docker image for development.
 - docs: place for all future documentation, including this.
 - entity: crate containing database models
 - migration: crate containing database migrations
 - rear: crate containing the main library for rear
 - src: crate containing a runnable project implementing rear as a demo project
 - static: static files used by rear
 - strinto: experimental crate for an idea.
 - templates: all templates for rear-admiral.