# Project Structure

## Root

```
.
├─ docs                    # documentations
├─ cmd                     # command-line tool
├─ app                     # app build with Vue 3
├─ resources               # additional resources, not for build
├─ template                # templates for nginx
├─ app.example.ini         # example configuration file
├─ main.go                 # entry point for server
└─ ...
```

## Documentations

```
.
├─ docs
│  ├─ .vitepress           # configurations directory
│  │  ├─ config
│  │  └─ theme
│  ├─ public               # resources
│  ├─ [language code]      # translations, e.g. zh_CN, zh_TW
│  ├─ guide
│  │  └─ *.md              # guide markdown files
│  └─ index.md             # index markdown
└─ ...
```

## Frontend

```
.
├─ app
│  ├─ public              # public resources
│  ├─ src                 # source code
│  │  ├─ api              # api to backend
│  │  ├─ assets           # public assets
│  │  ├─ components       # vue components
│  │  ├─ language         # translations, use vue3-gettext
│  │  ├─ layouts          # vue layouts
│  │  ├─ lib              # librarys, such as helper
│  │  ├─ pinia            # state management
│  │  ├─ routes           # vue routes
│  │  ├─ views            # vue views
│  │  ├─ gettext.ts       # define translations
│  │  ├─ style.css        # integrate taildwind
│  │  └─ ...
│  └─ ...
└─ ...
```

## Backend

```
.
├─ internal             # internal packages
├─ api                  # api for frontend
├─ model                # models of database
├─ query                # database query files generated by gen
├─ router               # router and middleware
├─ settings             # backend settings
├─ test                 # unit tests
├─ main.go              # main program entry
└─ ...
```

## Template


```
.
├─ template
│  ├─ block                # template for Nginx block
│  ├─ conf                 # template for Nginx configuration
│  └─ template.go          # embed template files to backend
└─ ...
```
