Add Getting Started
87
Getting-Started.md
Normal file
87
Getting-Started.md
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# Getting Started
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Go 1.22 or later (the router uses method+path patterns introduced in 1.22)
|
||||||
|
- No other external dependencies — SQLite is bundled via `modernc.org/sqlite` (pure Go, no CGO required)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.samantha42.xyz/samantha/FPandA-Engine
|
||||||
|
cd FPandA-Engine
|
||||||
|
```
|
||||||
|
|
||||||
|
Copy the example environment file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Install Go module dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go mod tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Running the Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go run ./main.go
|
||||||
|
```
|
||||||
|
|
||||||
|
On first run, the engine will:
|
||||||
|
|
||||||
|
1. Open (or create) the SQLite database at the path specified by `DB_PATH` (defaults to `fpa.db` in the current directory)
|
||||||
|
2. Run `CREATE TABLE IF NOT EXISTS` migrations automatically — no migration tool needed
|
||||||
|
3. Start the HTTP server on port `8080` (or the value of `PORT`)
|
||||||
|
|
||||||
|
You should see structured JSON log output:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{"time":"...","level":"INFO","msg":"server starting","port":"8080","db":"fpa.db"}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verify It's Running
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8080/api/v1/health
|
||||||
|
# → {"status":"ok"}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Load Demo Data
|
||||||
|
|
||||||
|
The repo includes a seed script with realistic data for Engineering, Sales, and Marketing departments across FY2024 period 9. See `scripts/seed_demo.sh` or POST directly to `/api/v1/actuals/ingest`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stopping the Server
|
||||||
|
|
||||||
|
Send `SIGINT` or `SIGTERM` (i.e. `Ctrl+C`). The server performs a graceful shutdown with a 15-second drain timeout before closing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Running Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go test ./...
|
||||||
|
```
|
||||||
|
|
||||||
|
Tests use Go's built-in testing package. The database is configured to use `:memory:` for tests so no disk state is left behind.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
- See [API Reference](API-Reference) for all available endpoints
|
||||||
|
- See [Finance Concepts](Finance-Concepts) to understand favourability logic and budget versioning
|
||||||
|
- See [Configuration](Configuration) for all available environment variables
|
||||||
|
|
||||||
Reference in New Issue
Block a user