furystack
FuryStack is a flexible, end-to-end framework that allows you to build complex services quickly and easily.
- Written in TypeScript. The public APIs are clean and readable.
- The core is built on top of native Node.js calls. Dependencies are carefully selected.
- You can create a backend in minutes with authentication, data stores, custom actions, and 3rd-party packages. You don't have to waste time searching for packages for entry-level functionality.
- You can implement and use your own custom actions, WebSocket calls, data stores, or loggers easily.
- Custom front-end library with type-safe JSX syntax and unidirectional data binding.
- The same concepts and design principles are shared between the frontend and backend. DI, logging, disposables, etc. work in the same way—and from the same package.
Getting Started
Install any FuryStack package using npm or yarn:
# Using npm
npm install @furystack/core @furystack/inject
# Using yarn
yarn add @furystack/core @furystack/inject
Check out the boilerplate repository for a working example with both backend and frontend setup.
Packages
Core
| Package | Version | Description |
|---|---|---|
| @furystack/core | Physical stores, defineStore, identity context, system-identity helpers |
|
| @furystack/inject | Functional dependency injection (defineService, Injector, tokens) |
|
| @furystack/utils | Utilities: Disposables, ObservableValue, Retrier, Trace | |
| @furystack/logging | Logging with scopes, levels, and custom loggers | |
| @furystack/cache | In-memory caching with expiration and capacity limits |
Data Storage
| Package | Version | Description |
|---|---|---|
| @furystack/repository | Repository pattern with DataSets, authorization, and event callbacks | |
| @furystack/filesystem-store | File-based store for development and testing | |
| @furystack/mongodb-store | MongoDB document store implementation | |
| @furystack/redis-store | Redis key-value store implementation | |
| @furystack/sequelize-store | SQL databases via Sequelize ORM |
REST API
| Package | Version | Description |
|---|---|---|
| @furystack/rest | REST API type definitions and contracts | |
| @furystack/rest-service | Server implementation with authentication, static files, and proxying | |
| @furystack/rest-client-fetch | Browser client using native fetch | |
| @furystack/websocket-api | WebSocket support for real-time communication |
Security and Authentication
| Package | Version | Description |
|---|---|---|
| @furystack/security | Password management and authorization utilities | |
| @furystack/auth-google | Google OAuth integration |
Internationalization
| Package | Version | Description |
|---|---|---|
| @furystack/i18n | Core i18n and translation management | |
| @furystack/shades-i18n | I18n components for Shades UI |
UI Framework (Shades)
| Package | Version | Description |
|---|---|---|
| @furystack/shades | JSX-based UI library with unidirectional data binding | |
| @furystack/shades-common-components | Reusable components and CSS-variable theming system | |
| @furystack/shades-mfe | Micro-frontend support | |
| @furystack/shades-lottie | Lottie animation wrapper | |
| @furystack/shades-nipple | NippleJS joystick wrapper | |
| @furystack/shades-showcase-app | Demo application |
Tooling
| Package | Version | Description |
|---|---|---|
| @furystack/yarn-plugin-changelog | Changelog generation from version manifests |
Contributing
Contributions are welcome! This is a monorepo managed with Yarn workspaces.
# Clone the repository
git clone https://github.com/furystack/furystack.git
cd furystack
# Install dependencies
yarn install
# Build all packages
yarn build
# Run tests
yarn test
License
This project is licensed under the GPL-2.0 License.