This repository contains the implementation of a simple frontend application for the S4E.io platform. The application replicates a scan tools list with filtering, responsive design, and local state persistence. It is built using Next.js, Tailwind CSS, and ShadCN UI.
You can have a look at the live preview link:











S4E.io is a cybersecurity platform that continuously detects and reports system vulnerabilities. This project focuses on implementing the scan tools list available at S4E.io Scan Tools.
-
Responsive Design
- Implements a sidebar navigation and table-based layout.
- Supports both light and dark themes.
-
Table Functionality
- Filters based on
scan category
andsearch
. - Persisted filters using local storage to maintain the state after refresh or browser restart.
- Paginated table for better data visualization.
- Filters based on
-
Error Handling
- Displays user-friendly messages for API errors.
-
Backend Integration
- Fetches scan tools data via API from
https://app.s4e.io/api-token
. - Uses
fetch
for data retrieval.
- Fetches scan tools data via API from
- Next.js: Framework for server-side rendering and routing.
- Tailwind CSS: Utility-first CSS framework.
- ShadCN UI: Component library for consistent design.
- Zustand: State management library for managing table filters and persistence.
- TypeScript: Typed JavaScript for improved developer experience.
app/
βββ components/ # Placeholder for reusable React components.
βββ config/ # API endpoints and configuration files.
β βββ endpoints.ts # Endpoint configuration.
βββ lib/ # Utility functions and data definitions.
β βββ data.ts # Mock or utility data.
β βββ definitions.ts # TypeScript type definitions.
βββ scanners/ # Components and logic specific to the scan tools list.
β βββ columns.tsx # Table column definitions.
β βββ dataTable.tsx # Data table implementation.
β βββ page.tsx # Main page for displaying the scan tools list.
βββ seed/ # Seeder data for development.
β βββ seedScannersData.ts
βββ store/ # Zustand state management logic.
β βββ localStorageService.ts # Utilities for managing local storage.
β βββ queryStore.ts # Zustand store for filters and table state.
βββ ui/ # UI components like navigation and sidebar.
β βββ navLinks.tsx # Links for navigation.
β βββ sidenav.tsx # Sidebar component.
βββ utils/ # General utility functions.
β βββ utils.ts
βββ globals.css # Global styles.
βββ layout.tsx # App layout component.
βββ page.tsx # Root page implementation.
- Node.js (version >= 18.x recommended)
- npm, yarn, or pnpm
-
Clone the repository:
git clone https://github.com/your-username/s4e-frontend-task.git cd s4e-frontend-task
-
Install dependencies:
npm install
or
yarn install
or
pnpm install
-
Start the development server:
npm run dev
or
yarn dev
or
pnpm dev
-
Open the application in your browser:
- Navigate to the Tools List section.
- Use the Search or Category Filter to refine results.
- Switch between Light and Dark themes using the toggle button.
- Navigate through pages using the pagination controls.
- Endpoint: List of All Scans
- Data Fetching: Uses the fetch API for retrieving scan tools data.