An open-source collaborative cloud platform for development teams.
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.
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.
-
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.
- 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
# 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
-
Go to GitHub Developer Settings and create some new OAuth/regular app.
-
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
- Once the app is created, you will be able to see the
Client ID
andClient 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
.
# 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
fly postgres create
Now, you can set the environment variables : DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE.
fly redis create
Now, you can set the environment variables : REDIS_HOST, REDIS_PORT, REDIS_PASSWORD.
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.
# 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
fly deploy
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.
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.
This project is open-source and available under the MIT License.