1.8 KiB
nfSense Web Client
This folder contains the standard client for the nfSense firewall.
Goals and Priorities
The nfSense web client should be...
- As reliable as possible
- Pleasing to the eye and intuitive to new users
- Fast, and not get in your way.
Technology
General Structure
The nfSense web client is a monolithic Single-Page Web-Application.
Critical Dependencies
We encourage any potential contributor to familiarize themselves with these tools and libraries before making changes, as they lie at the heart of the project.
- Vue 3: Frontend Framework
- Vite: Dev and Build Tool
- Typescript: Adds Type Information to JS
- Vue Macros: Replacement for the deprecated experimental Reactivity Transform feature of Vue 3
Important Dependencies
These libraries aren't mandatory to be able to work on the nfSense web client, this listing is merely meant to pre-empt redundancies.
- ESLint: The standard JS linter, which we also use to enforce some code style choices.
- Iconify: Icons (Could be replaced with custom ones)
- Markdown-It: We prefer markdown for informational texts, and use this to render it on the frontend.
High-Level choices
We are currently not using a component library to maintain full control over our styling and keep the bundle small and dependencies few.
We do not use JavaScript-Based layouting and animations. Components simply render out DOM nodes that are styled and animated with CSS alone.
Building
We use pnpm as our package manager please follow their documentation to set up a working development environment on the latest stable release of Node. Run pnpm run dev
to start a development server, or pnpm run build
to generate distribution files. We're working on including launch tasks to allow seamless debugging within VSCodium.