A comprehensive resource management system for tracking and managing access to shared resources.
- Resource Management
- Track resource status, usage, and maintenance
- Image support for resources with automatic resizing and caching
- Role-based access control
- Maintenance scheduling
- Usage tracking and reporting
FabAccess provides ESPHome components for easily integrating IoT devices with your access control system:
- Real-time resource status monitoring via Server-Sent Events (SSE)
- No polling required - uses persistent connections for efficient updates
- Automatic reconnection if connection is lost
- Compatible with ESP8266/ESP32 devices
- Enables automation based on resource status (availability, usage, etc.)
- Provides both sensors and binary sensors for monitoring
To integrate your IoT devices with FabAccess, add this to your ESPHome configuration:
external_components:
- source:
type: git
url: https://github.com/FabInfra/FabAccess-esphome-components.git
components: [fabaccess_resource]
See the FabAccess ESPHome Components repository for detailed documentation and examples.
Resources can have associated images to help users identify them. The system supports:
- Image upload during resource creation and updates
- Automatic image resizing and caching
- Supported formats: JPEG, PNG, WebP
- Maximum file size: 10MB
- Image dimensions: 16px-2000px
- Flexible URL structure:
- Original image:
/storage/resources/{id}/original/{filename}
- Resized images:
/storage/cache/resources/{id}/{width}x{height}/{options_hash}/{filename}
- Optional parameters: fit (contain/cover/fill), format (webp/jpeg/png), quality
- Original image:
- Clone the repository
- Install dependencies:
pnpm install
- Set up environment variables:
cp .env.example .env
- Run database migrations:
nx run api:run-migrations
Start the development server:
nx serve api
The API will be available at http://localhost:3000
.
Swagger documentation is available at /api
when the server is running.
Please see CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
✨ Your new, shiny Nx workspace is almost ready ✨.
Learn more about this workspace setup and its capabilities or run npx nx graph
to visually explore what was created. Now, let's get you up to speed!
Click here to finish setting up your workspace!
To run the dev server for your app, use:
npx nx serve api
To create a production bundle:
npx nx build api
To see all available targets to run for a project, run:
npx nx show project api
These targets are either inferred automatically or defined in the project.json
or package.json
files.
More about running tasks in the docs »
While you could add new projects to your workspace manually, you might want to leverage Nx plugins and their code generation feature.
Use the plugin's generator to create new projects.
To generate a new application, use:
npx nx g @nx/node:app demo
To generate a new library, use:
npx nx g @nx/node:lib mylib
You can use npx nx list
to get a list of installed plugins. Then, run npx nx list <plugin-name>
to learn about more specific capabilities of a particular plugin. Alternatively, install Nx Console to browse plugins and generators in your IDE.
Learn more about Nx plugins » | Browse the plugin registry »
Nx Console is an editor extension that enriches your developer experience. It lets you run tasks, generate code, and improves code autocompletion in your IDE. It is available for VSCode and IntelliJ.
Learn more:
- Learn more about this workspace setup
- Learn about Nx on CI
- Releasing Packages with Nx release
- What are Nx plugins?
And join the Nx community: