devalade / console

An open-source platform for development teams.

Home Page:https://www.softwarecitadel.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[WIP] Software Citadel - Console

An open-source collaborative cloud 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, Fly.io, and more to come;
  • a development teams platform, that allows developers to plan tasks, chat, and share code.

Why

Today, developers have to juggle between tons of different services to get their work done. They have to use GitHub for code hosting, Slack for communication, Trello for task management, and more. We believe that it's time to bring all these services together in a single platform, to make it easier for developers to get their work done.

Key Features

  • Applications: Deploy your dockerized applications in a cloud environment, with support for multiple drivers, such as Docker, Fly.io, and more to come.

  • Databases: Deploy your databases in a cloud environment, with support for multiple drivers, such as PostgreSQL, MySQL, and more to come.

  • Dev Machines: Create Ubuntu development machines, and access them through the open-source version of Visual Studio Code.

  • Chat: Chat with your team members, and share code in real-time.

  • Kanban: Plan your tasks, and track your progress.

  • Storage: Store your files in a cloud environment, with a S3-compatible storage driver.

  • Code Hosting: Host your code in a cloud environment, making use of the built-in integration of Gitea.

  • Send Emails: Send transactional emails to your users, with the built-in integration of Mailu.

  • Analytics: Track visits on your website.

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
  • Gitea - A self-hosted Git service, used in the Console for code hosting

Development Setup

Docker

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 development containers (as defined in zarf/dev/docker-compose.yml)
# and the development server.
npm run dev

Set up GitHub OAuth

  1. Go to GitHub Developer Settings and create some new OAuth/regular app.

  2. Fill in the form with the following values :

  • Application name : Software Citadel Console
  • Homepage URL : http://127.0.0.1:3333
  • Callback URL : http://127.0.0.1:3333/auth/github/callback
  1. Once the app is created, you will be able to see the Client ID and Client Secret. Add them to the .env file :
GITHUB_CLIENT_ID=<your_client_id>
GITHUB_CLIENT_SECRET=<your_client_secret>

You now should be able to log in with GitHub.

Please remember to use http://127.0.0.1:3333 as your development URL, instead of http://localhost:3333.

Fly.io Setup

Requirements

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

Set up the logs shipper

# Set up Smee.io, to deliver webhooks to your local development environment
npm install -g smee-client
smee --target http://127.0.0.1:3333/fly/webhooks/logs --url https://smee.io/<your_smee_id>

# 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 --no-deploy

# 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=https://smee.io/<your_smee_id>
fly secrets set HTTP_TOKEN=<replace_this_with_your_http_bearer>

# Now, you can deploy the logs shipper
fly deploy

Production Setup

Fly.io

Requirements

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

Launch the application

Set up the PostgreSQL database

fly postgres create

Now, you can set the environment variables : DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE.

Set up the Redis database

fly redis create

Now, you can set the environment variables : REDIS_HOST, REDIS_PORT, REDIS_PASSWORD.

Set up the storage bucket

fly storage create

Now, you can set the environment variables : S3_ENDPOINT, S3_BUCKET, S3_AVATAR_BUCKET, S3_REGION, S3_ACCESS_KEY, S3_SECRET_KEY.

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=https://console.<your_domain>/fly/webhooks/logs
fly secrets set HTTP_TOKEN=<replace_this_with_your_http_bearer>
fly secrets set ACCESS_TOKEN=<replace_this_with_your_access_token>

# Now, you can deploy the logs shipper
fly deploy

Deploy the application

# Deploy the application
fly deploy

FAQ

How to contribute?

The best way to contribute is to solve one of the issues marked with the open for external contributions tag. And please comment on the issue to let us know that you're working on it.

To get started, you can fork the repository, create a new branch, and start working on the issue. Once you're done, you can create a pull request.

For more information, you can contact us on the Discord server or through this contact form.

If you want to contribute with a new feature, please open an issue first, so we can discuss it.

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.

License

This project is open-source and available under the MIT License.

About

An open-source platform for development teams.

https://www.softwarecitadel.com

License:MIT License


Languages

Language:TypeScript 96.6%Language:Edge 1.8%Language:JavaScript 0.8%Language:Shell 0.4%Language:Dockerfile 0.2%Language:CSS 0.2%