fix(backend): P2 config & Docker consistency
Some checks failed
Lint and Build / format (pull_request) Successful in 1m44s
Lint and Build / clippy (pull_request) Successful in 1m48s
Lint and Build / build (pull_request) Successful in 6m40s
Lint and Build / test (pull_request) Failing after 1s

Resolve the operational/config sprawl (#10-#14 from the review): the app read
NORMOGEN_*/MONGODB_* env vars but every env/compose file set SERVER_*/DATABASE_*,
the ports were all over the place (8080/8000/6500/6800), there were 5
inconsistent Dockerfiles (rust:1.82 vs rust:1.93, missing curl), and an 18 MB
binary was committed.

Env-var names — standardize on what the code reads:
* config/mod.rs: NORMOGEN_PORT default 8080 -> 6500 (avoid the over-common
  8000/8080).
* db/mod.rs: create_database() now reads MONGODB_DATABASE (was DATABASE_NAME).
* .env.example, defaults.env, docker-compose.yml, docker-compose.dev.yml,
  DEPLOYMENT_GUIDE.md, deployment/README.md, deploy-and-test-solaria.sh,
  deploy-local-build.sh: use NORMOGEN_HOST/NORMOGEN_PORT/MONGODB_URI/
  MONGODB_DATABASE/APP_ENVIRONMENT; drop the dead SERVER_*/DATABASE_URI/
  DATABASE_NAME names.

Ports — canonical container port 6500 everywhere:
* Both Dockerfiles EXPOSE 6500; prod compose maps 6500:6500, dev 6501:6500.
* Bulk-replaced the long tail of solaria:8000/localhost:8000/localhost:8080 in
  docs and test scripts -> 6500.

Dockerfiles — 2 canonical, rust:latest, curl + healthcheck:
* backend/Dockerfile (prod): rust:latest builder, debian runtime now installs
  curl (so the compose HEALTHCHECK actually works), EXPOSE 6500.
* backend/docker/Dockerfile.dev (dev): rust:latest both stages, EXPOSE 6500.
* Deleted 3 redundant Dockerfiles (Dockerfile.improved x2, docker/Dockerfile).
* Deleted the committed 18 MB binary backend/docker/normogen-backend.
* Deleted 2 stray fix-notes in backend/docker/.

Compose:
* docker-compose.yml: correct env names, 6500:6500, APP_ENVIRONMENT=production,
  JWT_SECRET/ENCRYPTION_KEY required via compose interpolation, dropped the
  obsolete top-level version: key.
* docker-compose.dev.yml: correct env names, 6501:6500, mongo:7 (was 6.0),
  added a working backend healthcheck.
* Deleted docker/docker-compose.improved.yml + backend/deploy-to-solaria-improved.sh
  (built around the now-deleted 'improved' Docker files).

Verified: cargo fmt --check clean, build + clippy --all-targets clean, 18 unit
tests pass; grep confirms no SERVER_*/DATABASE_* env names and no rust:1.x tags
remain outside docs/archive and docs/adr (historical).
This commit is contained in:
goose 2026-06-27 19:54:32 -03:00
parent 17efc4f656
commit fff1ed2e6d
31 changed files with 115 additions and 553 deletions

View file

@ -83,19 +83,19 @@ docker-compose logs -f backend
### Base URL
```
http://solaria:8000
http://solaria:6500
```
### Public Endpoints (No Auth)
#### Health Check
```bash
curl http://solaria:8000/health
curl http://solaria:6500/health
```
#### Register
```bash
curl -X POST http://solaria:8000/api/auth/register \
curl -X POST http://solaria:6500/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
@ -106,7 +106,7 @@ curl -X POST http://solaria:8000/api/auth/register \
#### Login
```bash
curl -X POST http://solaria:8000/api/auth/login \
curl -X POST http://solaria:6500/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
@ -116,7 +116,7 @@ curl -X POST http://solaria:8000/api/auth/login \
#### Set Recovery Phrase
```bash
curl -X POST http://solaria:8000/api/auth/set-recovery-phrase \
curl -X POST http://solaria:6500/api/auth/set-recovery-phrase \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
@ -126,7 +126,7 @@ curl -X POST http://solaria:8000/api/auth/set-recovery-phrase \
#### Recover Password
```bash
curl -X POST http://solaria:8000/api/auth/recover-password \
curl -X POST http://solaria:6500/api/auth/recover-password \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
@ -139,13 +139,13 @@ curl -X POST http://solaria:8000/api/auth/recover-password \
#### Get Profile
```bash
curl http://solaria:8000/api/users/me \
curl http://solaria:6500/api/users/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Update Profile
```bash
curl -X PUT http://solaria:8000/api/users/me \
curl -X PUT http://solaria:6500/api/users/me \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -155,13 +155,13 @@ curl -X PUT http://solaria:8000/api/users/me \
#### Get Settings
```bash
curl http://solaria:8000/api/users/me/settings \
curl http://solaria:6500/api/users/me/settings \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Update Settings
```bash
curl -X PUT http://solaria:8000/api/users/me/settings \
curl -X PUT http://solaria:6500/api/users/me/settings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -171,7 +171,7 @@ curl -X PUT http://solaria:8000/api/users/me/settings \
#### Change Password
```bash
curl -X POST http://solaria:8000/api/users/me/change-password \
curl -X POST http://solaria:6500/api/users/me/change-password \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -182,7 +182,7 @@ curl -X POST http://solaria:8000/api/users/me/change-password \
#### Delete Account
```bash
curl -X DELETE http://solaria:8000/api/users/me \
curl -X DELETE http://solaria:6500/api/users/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"confirmation": "DELETE_ACCOUNT"
@ -191,7 +191,7 @@ curl -X DELETE http://solaria:8000/api/users/me \
#### Create Share
```bash
curl -X POST http://solaria:8000/api/shares \
curl -X POST http://solaria:6500/api/shares \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -204,13 +204,13 @@ curl -X POST http://solaria:8000/api/shares \
#### List Shares
```bash
curl http://solaria:8000/api/shares \
curl http://solaria:6500/api/shares \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Update Share
```bash
curl -X PUT http://solaria:8000/api/shares/SHARE_ID \
curl -X PUT http://solaria:6500/api/shares/SHARE_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -220,13 +220,13 @@ curl -X PUT http://solaria:8000/api/shares/SHARE_ID \
#### Delete Share
```bash
curl -X DELETE http://solaria:8000/api/shares/SHARE_ID \
curl -X DELETE http://solaria:6500/api/shares/SHARE_ID \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Check Permission
```bash
curl -X POST http://solaria:8000/api/permissions/check \
curl -X POST http://solaria:6500/api/permissions/check \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
@ -237,19 +237,19 @@ curl -X POST http://solaria:8000/api/permissions/check \
#### Get Sessions (NEW)
```bash
curl http://solaria:8000/api/sessions \
curl http://solaria:6500/api/sessions \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Revoke Session (NEW)
```bash
curl -X DELETE http://solaria:8000/api/sessions/SESSION_ID \
curl -X DELETE http://solaria:6500/api/sessions/SESSION_ID \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
#### Revoke All Sessions (NEW)
```bash
curl -X DELETE http://solaria:8000/api/sessions/all \
curl -X DELETE http://solaria:6500/api/sessions/all \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```
@ -309,8 +309,9 @@ JWT_SECRET=your-super-secret-jwt-key-min-32-chars
MONGODB_URI=mongodb://mongodb:27017
MONGODB_DATABASE=normogen
RUST_LOG=info
SERVER_PORT=8000
SERVER_HOST=0.0.0.0
NORMOGEN_PORT=6500
NORMOGEN_HOST=0.0.0.0
APP_ENVIRONMENT=production
```
## Security Features (Phase 2.6)