Skip to content

palmaresHQ/palmares

Repository files navigation

Palmares Logo

A Javascript and Typescript framework aimed at unification.


License Coverage

Description

Palmares is a framework that aims for unification and freedom. It's opinionated at the same time it's not. Bring your own tools, forget thinking if X works with Y. With Palmares it just works! You can use it even without a server!

You can also strip the hole framework apart and just use what you need from it on your projects. You don't need to use Palmares to use Palmares!

It's aimed to work well on monorepos and have ZERO dependencies at it's core. Where javascript runs, this framework is supposed to run as well. Even on places where javascript is definitely the worst language choice!

Motivation

The name of this framework is a tribute to Zumbi dos Palmares, a Brazilian hero who fought against the portuguese for the freedom of slaves in Brazil. A Quilombo was a place were the people who scaped slavery could go to live free in a community. This framework aims not to be yet another replacement tool or framework, but a framework that unify all JS ecosystem into one. It's about union and freedom of choosing what you want to use.

Every single day a hole bunch of time needs to be spent dealing with the complexity of making libraries work together. You just spent 3 full weeks trying to make your ORM work with your schema validator, guess what? Seems that a new ORM solution just came out yesterday.

With Palmares we can unify all the ecosystem into one by worrying in 2 fronts:

  • How to make the framework easy to use
  • How to make the framework easy to extend

XKCD comic joking about standards, but modified to say the only standard is palmares

Now cut the trash talk

The motivation is that we had nothing better to do. And Palmares is because we thought it would be a cool name, what did you expect? It was hard trying to find a correlation between the name and our goal, you should give us props to that!

Also, I write in third person because if this project start receiving contributions from maintainers we don't need to change first to third person. I'm a nice person, you know? Or we?

How does it differ from the others

  • Redwood.js, wasp-lang, t3stack, etc. Although great ways to create applications they can be categorized more on the template side of things. It's built around a set of tools in mind. You will probably build your apps in React, some of them uses Prisma, some uses Drizzle. They are all heavily opinionated on the tools you should use. Palmares is not opinionated at all, we go deep into creating an abstraction layer that can be used with all existing ORMs, servers, Schema validators. We are the common glue above all. And another thing: You can still use everything we give you independent from the framework, we also don't have any financial incentive to make you vendor-locked-in on our framework. Pick what you like and just use!
  • Nest.js An amazing piece of software, but I know you don't like Angular, neither do I. Decorators are still non native to Javascript and Nest relies a lot on it. But still, we are grateful for Nest existence because it gave us some nice ideas. Still on that, we go all-in on the abstractions we give to our users. You can interact with Drizzle, or with Express, but we give a higher level set of APIs for you to interact with those libraries as well. This let us scaffold your hole application and also create higher level abstractions at the same time we don't limit you to our implementations. Maybe you think we are bad developers (which maybe we really are), but this don't need to stop you from using our framework.
  • Adonis.js What we are trying to accomplish, but instead of doing everything ourselves we rely on popular libraries like Express, Drizzle, Zod, etc. We are not trying to substitute them but work alongside them.
  • Encore.js Kinda the same thing as Adonis. It's more like a Development Platform, as they sell it, than a framework.
  • Supabase and Strapi have a nice UI to build backend applications. We differ a lot from them.

When NOT to use Palmares

When you have skill issues, mostly

But also

  • You dream with Angular or think Javascript should be less Script and more Java: Nest.js
  • You just want to build your shiny new MVP with an opinionated set of tools you are already familiar: Redwood.js, wasp-lang, t3stack
  • You don't want to rely on third party, and want the full package: Adonis.js or Encore.js
  • You think that the Mouse is better than the Keyboard and you hate Code Editors in general: Supabase and Strapi

Getting Started and Documentation

Real developers code looking at the source code. But for you newbies out there, it's coming soon...

Issues

Guarantee that your issue follow our code of conduct guidelines before posting. All issues that does not follow our Code of Conduct will be closed and ignored and we'll tell your mom you behaved badly on a github repo, please don't do that.

Discussions and Help

Use our discussions tab for help and questions. We will be glad to help you out. If you are a total skill issued dev you can also use AI to help you out. Which I don't recommend because you'll teach AI how to work with palmares and it might take your job someday because of that. It's like shooting yourself in the foot!

F.A.Q.

  • Cool project!: Thank you.
  • Can I use it with typescript?: Yes, you can.
  • Where did you got the inspiration?: From Django and Rails, mostly. But they have lots of stuff, i want to make a more open and customizable version where you can use the tools you already use and love.
  • Can I contribute?: Yes, please do. We will be glad to have you on board.
  • Can I use it in production?: Not yet, we are still in early development.
  • Can I use it in my company?: Yes, you will be promoted if you use it.
  • Does it work with X?: Hopefully yes, if not, please open an issue.
  • Can I use it with my favorite ORM?: Yes, you can use it with any ORM you want.
  • Does it support the Edge?: Sadly it does not support edging at this given moment.
  • REWRITE IN RUST!!!: Yes, you can create adapters in rust, it's one of my ideas.
  • Don't you care about performance?: Yes, we do, but we care more about you having more time to spend with your family (Developer Experience)
  • When will it be ready?: When it's ready.
  • EW, JS, WHY NOT JAVA?: But it's Java.
  • I don't like it: I'm sorry to hear that, but you'll need to live and deal with our existence.
  • I love it: Thank you, we love you too.
  • I don't have any sense of humor, you should be more professional: Bla bla bla, talk to my hand.
  • Cringe: And here you are, looking for another JS framework...