Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Version 2 #83

Closed
andrasbacsai opened this issue Aug 10, 2021 · 21 comments
Closed

Version 2 #83

andrasbacsai opened this issue Aug 10, 2021 · 21 comments
Assignees

Comments

@andrasbacsai
Copy link
Member

andrasbacsai commented Aug 10, 2021

As I (and others) realized, Coolify could be more than just a project for hobbyists/developers. So I decided to create version 2 of all the things I learned so far.

What does it mean?

It means that I will extend it with enterprise-ready features, just as #75, #76, #77, etc.

What needs to be done?

A lot. The most important thing is that I separate the API from the frontend. SvelteKit Endpoints are super awesome, but for advanced use cases, it's not so extendable.

I will track the progress here.

What will be included in version 2?

⚠The list below is updated regularly. Follow it to get notifications.

Techstack

The v2 will use AdonisJS as a full-stack application with JQuery (on simple pages where it needs some JS) and Vue (on complex pages) with Edge template rendering engine.

Why AdonisJS?
AdonisJS has everything in its core that is required for Coolify.

Why JQuery / Vue / React?
I love SvelteKit, but it does not fit what Coolify would like to be in the future. Javascript is only included in those pages that need some interaction; otherwise, the whole page will be plain HTML/CSS rendered on the server.

I ♥ Svelte & SvelteKit, so I stick to it in v2.

I still could have pages without JS and where needed I could use Svelte! It makes development and everything way faster for me.

@andrasbacsai andrasbacsai self-assigned this Aug 10, 2021
@andrasbacsai andrasbacsai added this to the v2 milestone Aug 10, 2021
@andrasbacsai andrasbacsai pinned this issue Aug 10, 2021
@pepoviola
Copy link

Hi @andrasbacsai awesome news!! Looking forward to see the progress and try to colaborate with this project 😀

@badlanguage
Copy link

Will this include K8s integration with the emphasis on Enterprise? - as this is essentially a must have for scaling purposes and glad to hear all this! 🎉

@andrasbacsai
Copy link
Member Author

@badlanguage Yes, it will include 3 different integration types. Docker, Docker Swarm, and Kubernetes.

In the past few days, I'm testing different types of frameworks and ORM's.
The best so far is @nestjs + @prisma. 👌
It solves a lot of things by default (TS, ORM, code structure, shared modules, monorepo if I add more applications, like coolTalk, etc).

What do you think of this combo?

@pepoviola
Copy link

Sounds awesome 🙌 did you considered fastify + prisma or other lang as rust for the backend?

Thanks!

@badlanguage
Copy link

@badlanguage Yes, it will include 3 different integration types. Docker, Docker Swarm, and Kubernetes.

In the past few days, I'm testing different types of frameworks and ORM's.
The best so far is @nestjs + @prisma. 👌
It solves a lot of things by default (TS, ORM, code structure, shared modules, monorepo if I add more applications, like coolTalk, etc).

What do you think of this combo?

This is amazing news! I would however advice against a mono repo, especially for apps to keep the code separate, this also keeps any issues and documentation focused in separate repos. Nest and Prisma are a good choice, however like @pepoviola I am eager to know if you've attempted v2 with Rust, it brings alot of performance to the table, and has ORMs similar to that of Prisma.

Either way happy to see the progress, keep at it! If you have the chance to work on a branch that is public, I would love to follow the progress.

@andrasbacsai
Copy link
Member Author

andrasbacsai commented Aug 24, 2021

I would love to write the backend code with Rust, but I have way less experience with Rust than Node. It would take a bit longer than with Node, that's sure. Performance boost and type safety would be a huge difference.

Do you have a preferred framework in Rust? I was looking at Gotham or Rocket. Both looks promising!

So I'm still not sure in the final programming language / framework. 🤔

@andrasbacsai
Copy link
Member Author

andrasbacsai commented Oct 1, 2021

I made the final decision on the tech stack - I hope 😄 . You can read it in the first comment ☝🏻 .

I've tried several frameworks, and with the suggestion of @rubenmoya, I tried out AdonisJS, which fits perfectly for Coolify! Thanks for that!

The current state is:

  • You can add all supported types of Git Sources (self-hosted or use the official ones, like github.com, GitLab.com...)
  • You can add all supported types of Destinations (deployment endpoints, currently Docker and Docker Swarm supported, K8s will come later on)
  • You can add and connect Github Apps with Github Git Sources (Gitlab and Bitbucket will be supported later on)
  • You can connect the above things with your application and select a repository from your connected Git Source.

I will add a branch with the new codebase to this repository soon to be public for everyone (and try to do meaningful commit messages during development 😆 ).

@rubenmoya
Copy link

@andrasbacsai Glad to hear you liked it! I can't wait to try it.

Btw, about connecting with Gitlab, I built a Gitlab driver for Adonis Ally adonis-ally-gitlab. I could give it a try and build one for Bitbucket if that would be helpful!

@clearfram3
Copy link

@andrasbacsai what made you go with Adonis over SvelteKit? earlier in the thread it seemed like you were going to need lots of things (jquery and vue) to get the same functionality

@itsezc
Copy link

itsezc commented Nov 15, 2021

Really great to see the progress over the last month or so, I've had a chance to glance the v2 branch and it's refreshing to see regular commits.

Some noteable points:

  • WRT to the Prisma schema, would it not make sense to have one model for any application (Github or Gitlab) and have an ENUM type to classify, this should allow for easier transitioning if the App's source changes abruptly from Github <-> Gitlab. I am by no means an expert, just my thoughts.
  • Interesting to see that you've gone with Prisma, this is a far better choice than a traditional ORM like TypeORM or Mongoose, but it's worth investigating Hasura, it supports remote schemas stitching and automatic GraphQL and REST endpoints.

other than that I'm excited to see where this is going!

@andrasbacsai
Copy link
Member Author

@andrasbacsai what made you go with Adonis over SvelteKit? earlier in the thread it seemed like you were going to need lots of things (jquery and vue) to get the same functionality

Yeah, I like how AdonisJs works, but after I played with it a week, I realized I could do the same with SvelteKit.

I could prevent adding JS to pages where I do not need any, but still could add where I need dynamic pages with SvelteKit. Also, I love Svelte and SvelteKit. It's that simple. ❤️

@andrasbacsai
Copy link
Member Author

Really great to see the progress over the last month or so, I've had a chance to glance the v2 branch and it's refreshing to see regular commits.

Some noteable points:

  • WRT to the Prisma schema, would it not make sense to have one model for any application (Github or Gitlab) and have an ENUM type to classify, this should allow for easier transitioning if the App's source changes abruptly from Github <-> Gitlab. I am by no means an expert, just my thoughts.
  • Interesting to see that you've gone with Prisma, this is a far better choice than a traditional ORM like TypeORM or Mongoose, but it's worth investigating Hasura, it supports remote schemas stitching and automatic GraphQL and REST endpoints.

other than that I'm excited to see where this is going!

Thanks for the suggestion @itsezc!

Yeah, it makes sense to use one model, but some fields are totally different for these two providers, so I would not like to mix them for now.

Hasura looks great, but I will stick with Prisma for now. 😄

@faierbol
Copy link

HI @andrasbacsai congratz for your effort to build this great product. I have one question, when do you think V2 will be available to be deployed on a production cluster (kubernetes)?

@andrasbacsai
Copy link
Member Author

andrasbacsai commented Jan 10, 2022

It's been a while since I wrote here. I've been actively working on v2 for the past months, and it's almost finished to release. So many cool things will be in v2 and have lots of features coming after the release.

HI @andrasbacsai congratz for your effort to build this great product. I have one question, when do you think V2 will be available to be deployed on a production cluster (kubernetes)?

Kubernetes is one of them that is an upcoming feature. I concentrate on Docker now in the first release.

Excited for the release and your feedback! 😄

@racusrussia
Copy link

racusrussia commented Jan 19, 2022

Is it possible to migrate from version 1 to 2? Or will a clean install be required?

@andrasbacsai
Copy link
Member Author

A clean install is necessary, as I changed the whole architecture for a good reason. I do not want to change it again. In my eyes, V1 is just an MVP, as I was not sure that anyone was interested in this kind of application, but it looks like yes. 😄

@sphinxc0re
Copy link

@andrasbacsai are you still planning on using Tailwind? Are you aware of UnoCSS? If you are familiar with Tailwind, UnoCSS shouldn't be a huge switch and the development experience is absolutely fantastic!
Here is an accompanying blog post which I highly recommend reading: https://antfu.me/posts/reimagine-atomic-css

@vanlongme
Copy link

Hope integrate with Gitlab selfhost, that'll awesome !!

@andrasbacsai
Copy link
Member Author

@andrasbacsai are you still planning on using Tailwind? Are you aware of UnoCSS? If you are familiar with Tailwind, UnoCSS shouldn't be a huge switch and the development experience is absolutely fantastic! Here is an accompanying blog post which I highly recommend reading: https://antfu.me/posts/reimagine-atomic-css

Yep, still using Tailwind! UnoCSS looks super cool! I definitely take a look at it later on! Thanks for sharing!

@andrasbacsai
Copy link
Member Author

Hope integrate with Gitlab selfhost, that'll awesome !!

Yes, you can use GitHub & GitLab hosted or self-hosted instances atm. Bitbucket will come later on, after the release.

@andrasbacsai
Copy link
Member Author

Version 2 is finally here 🎉 Soft release this week, but will do a proper release (ProductHunt) later on! Yeey!

@andrasbacsai andrasbacsai unpinned this issue Feb 11, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 14, 2024
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants