Marten 0.3 has been officially released! 🚀
Marten is a Crystal web framework that makes building web applications easy, productive, and fun. The latest 0.3 release of the framework introduces significant enhancements, such as streaming capabilities, caching, JSON fields, duration fields, and more. You can check out the full changelog for a comprehensive overview of all the new features and changes included in this release.
Main new features and highlights
- Caching - Marten now lets you interact with a global cache store that allows interacting with an underlying cache system and performing basic operations such as fetching cached entries, writing new entries, etc. Marten's caching leverages a cache store mechanism and other third-party stores can be installed depending on your caching requirements (eg. Memcached, Redis).
- Streaming - It is now possible to generate streaming responses as part of handlers.
- JSON fields for models and schemas - Marten now provides the ability to define
jsonfields in models and schemas. These fields allow you to easily persist valid JSON structures (including
JSON::Serializableobjects) to the database.
- Duration fields for models and schemas - It is now possible to define
durationfields in models and schemas. These fields allow you to easily persist valid durations (that map to
Time::Spanobjects in Crystal) in your models but also to expect valid durations in data validated through the use of schemas.
- Deployment guides - New deployment guides were added for deploying Marten projects on Heroku and Fly.io
The Marten framework is in its early stages, and I'm actively seeking feedback from individuals interested in experimenting with it or utilizing it in their projects. If you find a bug or if you want to contribute and share ideas regarding the framework, don’t hesitate to open an issue/discussion in the project’s issue tracker on GitHub or chat with us in our Discord. Any help will be greatly appreciated!
If you are new to Marten, here are a few ideas on how you can get started:
Pond is a Crystal implementation of a WaitGroup, without channels or counters.
Shield is a comprehensive Identity & Access Management solution for Lucky framework.
https://github.com/dammer/state_control This shard provides a flexible state machine implementation in Crystal programming language.
You can use any enum to describe different states and use the StateControl(T) class with that enum to create your own specific state machine class.
The StateControl(T) class allows you to manage transitions between states, track transition history, and monitor time spent in each state. By using this shard, you have the flexibility to define and use your own enums and state machine classes tailored to your specific needs.