chore: relocate backend into apps/api ahead of monorepo merge

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 12:20:40 +08:00
co-authored by Claude Sonnet 5
parent af44598df6
commit eaa6d2276a
388 changed files with 0 additions and 13998 deletions
+26
View File
@@ -0,0 +1,26 @@
'use strict';
require('dotenv').config();
const useSSL = process.env.DB_SSL !== 'false';
const base = {
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT, 10) || 5432,
dialect: 'postgres',
dialectOptions: {
...(useSSL && {
ssl: {
require: true,
rejectUnauthorized: false,
},
}),
},
};
module.exports = {
development: base,
production: base,
};
+46
View File
@@ -0,0 +1,46 @@
/***********************************************************************************************************************************************************************
* File Name: db.config.js
* Type of Program: Configuration
* Description: Sequelize PostgreSQL connection instance.
* Reads credentials from environment variables and exposes a single
* authenticated Sequelize instance used across all models.
* Author: rgrgogu
* Date Created: Oct. 6, 2025
***********************************************************************************************************************************************************************
* HOW TO USE:
* const sequelize = require('./config/db.config');
* // Then use sequelize.define() or import your models directly.
***********************************************************************************************************************************************************************/
require('dotenv').config();
const { Sequelize } = require('sequelize');
const useSSL = process.env.DB_SSL !== 'false';
const sequelize = new Sequelize(
process.env.DB_NAME,
process.env.DB_USER,
process.env.DB_PASSWORD,
{
host: process.env.DB_HOST,
port: process.env.DB_PORT || 5432,
dialect: 'postgres',
dialectOptions: {
...(useSSL && {
ssl: {
require: true,
rejectUnauthorized: false, // or provide CA cert if strict
},
}),
},
// logging: process.env.NODE_ENV === 'development' ? console.log : false,
logging: false,
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000,
},
}
);
module.exports = sequelize;
+17
View File
@@ -0,0 +1,17 @@
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
# Single-node setup. Increase replication_factor if you add more Garage nodes.
replication_factor = 1
# RPC — used for node-to-node and CLI-to-daemon communication.
# rpc_secret is read from GARAGE_RPC_SECRET env var (set in .env).
rpc_bind_addr = "0.0.0.0:3901"
rpc_public_addr = "garage:3901"
[s3_api]
s3_region = "garage"
api_bind_addr = "0.0.0.0:3900"
[admin]
api_bind_addr = "0.0.0.0:3903"
+25
View File
@@ -0,0 +1,25 @@
// Returns a connected Redis/Valkey client, or null when CACHE_DRIVER=memory.
// Consumers must check for null before using Redis-specific features.
// Use case: when project is going to have LiveView in future.
const useRedis = process.env.CACHE_DRIVER !== 'memory';
if (!useRedis) {
console.log('ℹ️ Cache driver: memory (Redis skipped)');
module.exports = null;
} else {
const { createClient } = require('redis');
const client = createClient({
url: process.env.REDIS_URL || 'redis://127.0.0.1:6379',
});
client.on('error', (err) => console.error('[Redis] Connection error:', err));
(async () => {
await client.connect();
console.log('✅ Redis connected.');
})();
module.exports = client;
}