flecks/website/docs/introduction.mdx
2024-01-08 22:58:32 -06:00

62 lines
3.9 KiB
Plaintext

---
description: flecks makes a joy of JavaScript app development.
slug: /
---
# Introduction
⚡️ flecks will help you build a **flexible and powerful application in no time**.
💸 Save time and money and don't duplicate effort. Instead, **lean on infrastructure that already exists** to solve your problems.
💥 Ready for more? Use **advanced features** like [inter-node socket communication](./sockets#intercom).
🧐 Flecks is an **exceptionally-extensible fullstack application production system**. Its true purpose
is to make application development a more joyful endeavor. Intelligent defaults combined with
a highly dynamic structure motivate consistency while allowing you to easily express your own
opinions.
## Features {#features}
flecks is built with supreme attention to the developer and end-user experience.
- 🧩 **Small but pluggable**
- The simplest application is two flecks, `core` and `server`: you don't pay for what you don't buy
- Endlessly configurable through built-in [hooks](./flecks/@flecks/dox/hooks) and then your own
- Less exposed wires (though you could always help by [submitting a pull request](https://github.com/cha0s/flecks/compare)).
- 🛠️ **Ready to build maintainable and performant production applications**
- [Documentation website](./documentation) generation for your project with no fuss
- [Write tests](./testing), run on server/in browser/...
- [React](#todo) / [redux](#todo)
- [Realtime sockets](./sockets) with lots of goodies like binary packing and packet dispatching
- [Databases](./database) using [Sequelize](https://sequelize.org/) to connect and [Docker](https://www.docker.com/) to easily persist
- [Electron](#todo)
- [Docker](#todo)
- [REPL](#todo)
- babel + Webpack 5
- 👷 **Developers, developers, developers**
- Easy to create a fleck; no need to publish packages or use voodoo
- HMR (even on the server)
- Configured to get instantly up and running with a consistent path toward production
Our shared goal—to help you quickly develop your application. We share our best practices to help you build your application right and well.
## Design principles {#design-principles}
- **Little to learn**. flecks should be easy to learn and use as the API is quite small. Most things will still be achievable by users, even if it takes them more code and more time to write. Not having abstractions is better than having the wrong abstractions, and we don't want users to have to hack around the wrong abstractions. Mandatory talk—[Minimal API Surface Area](https://www.youtube.com/watch?v=4anAwXYqLG8).
- **Intuitive**. Users will not feel overwhelmed when looking at the project directory of a flecks project or adding new features. It should look intuitive and easy to build on top of, using approaches they are familiar with.
- **Modular**. flecks is built from the ground up with separation of concerns as a first-class concern.
- **Sensible defaults**. Common and popular performance optimizations and configurations will be done for users but they are given the option to override them.
- **No vendor lock-in**. Users are not required to use the default flecks, although they are highly encouraged to.
- **Minimize duplicated effort**. For instance, we ripped a lot of this wording off of the Docusaurus introduction page. :dancer:
We believe that, as developers, knowing how a library works helps us become better at using it. Hence we're dedicating effort to explaining the architecture and various aspects of flecks with the hope that users reading it will gain a deeper understanding and be even more proficient in using it.
## Staying informed {#staying-informed}
- [GitHub](https://github.com/cha0s/flecks)
## Something missing? {#something-missing}
If you find issues with the documentation or have suggestions on how to improve the documentation or the project in general, please [file an issue](https://github.com/cha0s/flecks/issues/new) for us.