Fireback accelerates backend and mobile app development, offering powerful code generation tools and standardized architecture. With seamless backend integration and streamlined workflows, Fireback expedites the creation of robust and scalable apps.
Fireback is a backend framework written in Go, for Go developers. Fireback is opinated,
it could be making developing of certain type of projects 20x-30x faster, and easier.
Fireback depends on definition files to create entities, actions, dto and uses those
definitions to create go code, react code, android and ios.
Although fireback is for creating backend, it has a look on Android, Swift, React/Native apps
and generates sdk for them, to make it easier to use your backend or microservice directly
in the apps. When you complete your backend in fireback, cli tools can be used to generate
react sdk, and other platform tools.
Fireback is pure golang, you can organize your code as you want after all, you can use
it in new projects or add it to your existing projects. Code tries to be independent as
much as possible, but it is on top of Gin and Gorm libraries, and has few other things
for cli.
Fireback comes with workspaces module, which includes many day to day functionality,
such as user signin, signup, forget password, ABAC, role permission system, and many
more you might need to build a mid to large scale backend.
Getting started
You can create a new project by installing fireback, and using fireback new command,
create some actions and entities and build your first backend with tons of functionalities in 10 minutes.
Watch on youtube (How to build a backend in 15 minutes)
Core principles
The reason I have started this project was to change the course of action for entire software development I am involved for next
30 years, they include but not limited to:
Compile the fastest (within 10 seconds or less), use the least memory (less than 5MB in idle mode), and ensure type safety.
Products should have a minimum lifespan of 20 years after their initial build.
Never rewrite the code, due to back structure or skipping important details (remove the "Nice to have" line)
Achieve machine independence without relying on Docker or other similar tools.
Compile for various platforms including web, native mobile (iOS, Android), desktop, and embedded devices.
Do not address ambiguity regarding roles, workspaces, permissions, or email/SMS/OAuth authentication.
Utilize SQL with an organized data structure.
Prioritize code management over code generation.
Significantly reduce the build times for clients in Android, React, Angular, and SwiftUI.
Zero setup backend usage for front-end or app developers
Always provide more than any one's need, always before they ask
Core features on backend
Integrated desktop app support using Wails
Binaries ready to be embedded on Android and IOS native, as well as cordova for offline backend usage (same code base)
Build on top of Golang. Fast build time, blazing fast runtime, least memory usage.
Terminal (CLI) for everything, even user signup, forget password
User/Role/Workspace built into everything.
User permission management
Relational Database support (Sqlite/Mysql/Oracle/Postgres)
Nested, Object in Object, Array in Object, Object in Array post form handler
Polyglot (Multilingual) built into the definition
File upload system, virtual directories based on resumable file upload (TUS)
Form validation, even for nested objects
Reactive stream query based on WebSocket on Module2 definition
Bulk Patch (Update) on every entity.
Publicly available versus workspace/user protected actions
Custom action definition, auto cast from HTTP and CLI
Generate Post, Patch, Query, Delete, Bulk Patch, for every entity
Html and rich text content storage
Dynamic data using json support as well as ERD data storage
QueryDSL for every entity, to query, filter them, sort, without extra dependencies
Built in search mechanism
Multilingual menu system, sidebar, tabbar design.
Generate API and actions to work with children (nested elements) inside another entity (add/remove/etc)
Auto handle for unique ids and relations between non-nested elements
Formatting dates, currency, time, based on the client region
Backend error translated based on the accept language
Complete and unified google json styleguide response, without even single exception
Manual and automatic mocking system built into all entities
Seeder system to include the initial or necessary content for the entities to built to binary (yaml/json/csv)
Advanced background operation for import/export all entities
Default and custom defined permission definition
CSV/yaml data template generation to fill in and import
Auto sanitize the content
Advanced and clean form validation, excerpt content creation
Casting dto/entity from cli parameters
Pdf export for the queries (beta) without any kind of thirdparty dependency
JsonDSL (for complex conditions on a query) and QueryDSL (textual query)
Predefined queries on SQL (Pivot and Recursive CTE operation for all entities)
Event system for changes on the entity, and broadcasting to rooms using WebSocket
Wipe entities on CLI (development) and multi row delete
Automatic forcing the user privilegs on the content they can create or modify
Multiple workspaces, and multiple roles inside each workspace
Multiple workspace type (such as School, Student, etc)
Direct signup to a team, via public join key
Distinct by user, workspace operation flag
Interactive cli tools for creating entities, as well as traditional
Support of complex enum, which casts to all major programming languages
React/Native generator features
Action, errors, dto and entites definitions
Fields information
Autogenerate necessary form elements
Backend post/get/... methods with typesafety
Automatic event mapped to socket and update ui
Caching, filters, multiple update handlers
Typesafe translations
Error handling for each input parser
Android/IOS compiler features
Full ABAC screens and functionality using native elements
Entire dto, actions, entities on Java and Swift.
Form generation helpers
Ali Torabi
Software Engineer
My name is Ali Torabi, I am a software engineer who is highly interested in JavaScript, Golang and C++. I serve clients, build projects and create content and videos. Started programming in primary school, still at age of 31 it's main activity I do.