Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/titobrian97/Prueba-tecnica-ts-node---gestion-de-csv/llms.txt

Use this file to discover all available pages before exploring further.

CSV Manager is a full-stack TypeScript application that lets users upload a CSV file through a browser interface and instantly search across every row and column of the parsed data. Built with an Express 5 backend and a React + Vite frontend, it eliminates the need for a database by keeping parsed records in server memory for the duration of the session — making it fast to set up, easy to extend, and ideal for ad-hoc data exploration tasks.

What it does

Upload any comma-delimited CSV file and receive back a structured JSON array. Once uploaded, every field in every row becomes searchable through a single query parameter.

Architecture overview

A CORS-enabled Express 5 server handles file ingestion and search. A Vite-powered React 19 frontend provides the upload form and a debounced live-search interface. No database is required.

API surface

Two REST endpoints cover the full workflow: POST /api/files to ingest a CSV and GET /api/users?q= to run a case-insensitive full-text search against the parsed rows.

Getting started

Clone the repo, install dependencies for the backend and frontend, spin up both dev servers, and upload your first CSV in under five minutes.

Key features

CSV upload via multipart form

The backend accepts multipart/form-data uploads through Multer, validates the text/csv MIME type, and converts the raw CSV string to a JSON array with convert-csv-to-json.

In-memory storage

Parsed rows are stored in a module-level array on the Express server. No database setup is needed — data is available instantly after a successful upload.

Full-text search across all fields

GET /api/users?q= performs a case-insensitive search across every value in every column, filtering rows where any field contains the query string.

Debounced React search UI

The frontend uses use-debounce to throttle API calls as the user types, keeping the experience snappy and preventing unnecessary network requests.

CORS-enabled Express 5 backend

The backend applies the cors middleware globally, so the React dev server on port 4000 can talk to the API on port 3000 without proxy configuration.

TypeScript end-to-end

Both the Express server (ts-node) and the React application (TypeScript 6 + Vite) are written in TypeScript, providing type safety from the API boundary through to the UI layer.

REST endpoints

CSV Manager exposes exactly two endpoints:
MethodPathPurpose
POST/api/filesUpload a CSV file as multipart/form-data with the field name file. Returns the parsed JSON array and a status message.
GET/api/users?q=Search the in-memory dataset. The q query parameter is matched case-insensitively against all column values.

Data storage model

CSV Manager stores parsed CSV rows in a plain in-memory JavaScript array on the Express server process. There is no database, no file system persistence, and no external cache. Each successful POST /api/files request replaces the previous dataset entirely, so the server always reflects the most recently uploaded file.
Because data is held in memory, it is tied to the lifetime of the Node.js process. If the backend server restarts for any reason — a crash, a code change with ts-node, or a machine reboot — all previously uploaded CSV data is lost and a new file must be uploaded before search will return results.

Build docs developers (and LLMs) love