/console

An open-source collaborative cloud platform for development teams.

Primary LanguageTypeScriptMIT LicenseMIT

[WIP] Software Citadel - Console

An open-source platform for development teams.

About

Software Citadel Console consists in :

  • a PaaS (Platform as a Service) that allows developers to deploy their applications and databases in a cloud environment, supporting multiple drivers, such as Docker and Fly.io ;
  • a development teams platform, that allows developers to plan tasks, chat, and share code.

Stack

  • AdonisJS - A fully-featured Node.js framework
  • React - The library for web and native user interfaces
  • TailwindCSS - A utility-first CSS framework
  • ShadCN UI - A collection of TailwindCSS components
  • Inertia.js - A glue that connects AdonisJS and React
  • Docker - A containerization platform
  • Traefik - A reverse proxy and load balancer
  • PostgreSQL - A relational database management system
  • Redis - An in-memory data structure store
  • Resend - A transactional email service

Development Setup

Requirements

  • Node.js - JavaScript runtime
  • npm - Node.js package manager
  • Docker - A containerization platform

Installation

# Clone the repository
git clone https://github.com/SoftwareCitadel/console.git
cd console

# Install dependencies
npm install

# Create a .env file
node ace install

# Run the migrations
node ace migration:run

# Start the development server
npm run dev

Fly.io Setup

Requirements

  • Fly.io - A Fly.io account with a registered billing card
  • Flyctl - The Fly.io CLI

Set up the database

TO BE WRITTEN

Deploy the application

TO BE WRITTEN

Set up the logs shipper

# Create a new directory for the logs shipper
mkdir logshippper
cd logshippper

# Don't deploy just yet. We need to set up the secrets first.
fly launch --image ghcr.io/superfly/fly-log-shipper:latest

# Let's set up the secrets
fly secrets set ORG=personal # Replace with something else if you're using some organization
fly secrets set HTTP_URL=<your_hostname>/fly/webhooks/logs
fly secrets set HTTP_TOKEN=<replace_this_with_your_http_bearer>

FAQ

What if I want to use it with some not-supported orchestration driver?

You can create a new driver by copy/pasting the blank driver like such :

cp -r app/drivers/blank app/drivers/<your_driver>

Then, you can iterate on the driver to make it work with your orchestration platform.

For example, you might have to have to add some environment variables to the .env file, and validating them in the start/env.ts file, etc.

If you need some help, feel free to contact us.