Web/ERP Rodrigues Denoni Engenharia

Web/ERP Rodrigues Denoni Engenharia

A complete ERP system to centralize clients, contracts, finances and projects for an engineering firm, replacing manual processes with real-time control.

Private repository — The source code is company property and is not publicly available. All data shown in the screenshots is fictional and for illustrative purposes only.

Summary

The Rodrigues Denoni Engenharia ERP was built to digitize and centralize the full operation of a civil engineering firm — from financial management to on-site construction tracking. The system covers everything from client, supplier and employee registration to contract management, service orders, fleet maintenance and payroll, replacing fragmented manual processes with an integrated platform accessible from any device.

The Challenge

The firm operated with scattered spreadsheets, informal communication and no centralized visibility into field activities or finances. Engineers logged construction progress in notebooks, employee hours were tracked manually, bank statements had to be reconciled by hand, and clients had no way to follow the status of their projects. Each department worked in isolation, leading to rework, inconsistencies and poor decision-making.

The Solution

I built a complete ERP with a Python (FastAPI) back-end and a React + TypeScript front-end, fully containerized with Docker. The architecture was designed to cover all operational workflows in a single system, with role-based access control (admin, engineer, client) and a responsive interface that works on both desktop and mobile for field use.

Features

Finance

  • Revenue and expense tracking with categorization and full history
  • Bank reconciliation via OFX statement import
  • Financial report generation with PDF export
Finance module

Finance module — entries, bank reconciliation and reports

Construction & contracts

  • Contract management with schedules, status tracking and change history
  • Construction diary: log daily activities, incidents and photos directly from a mobile device on-site
  • Project completion records with milestone tracking and documentation
Construction diary

Construction diary — logging activities and incidents from a mobile device on-site

Construction tracking

Construction & contracts — schedules, status tracking and milestone completion

Clients & suppliers

  • Full registration of clients, suppliers and employees
  • Client portal: real-time tracking of service orders, construction progress and pending payments

Fleet & incidents

  • Preventive and corrective vehicle maintenance control
  • Incident and claim tracking with history and documentation
Fleet and vehicle module

Fleet & incidents — vehicle maintenance control and incident records

Workforce & payroll

  • Employee time and attendance tracking
  • Automatic payroll spreadsheet generation based on logged hours
Time tracking module

Time tracking — attendance control and payroll spreadsheet generation

Stack

Back-end

TechnologyPurpose
FastAPIAsync web framework
SQLAlchemyORM
PostgreSQLRelational database
AlembicDatabase migrations
PydanticData validation
JWT + bcryptAuthentication & password hashing
ofxparseOFX bank statement parser
boto3AWS S3 / MinIO integration
pytestAutomated testing

Front-end

TechnologyPurpose
React + TypeScriptTyped, scalable UI
TanStack RouterType-safe routing
TanStack QueryServer state & caching
React Hook Form + ZodForm handling & validation
Tailwind CSSUtility-first styling
shadcn/ui + Radix UIAccessible components (WCAG 2.1 AA)
RechartsCharts & dashboards
jsPDFPDF generation
AxiosHTTP client
ViteBuild tool & dev server

Infrastructure

ServicePurpose
Docker + Docker ComposeContainerization
NginxReverse proxy & SPA fallback
MinIOS3-compatible storage (development)
Backblaze B2Image and document bucket storage (production)
RailwayProduction hosting

Architecture

The project follows Clean Architecture on the back-end, with a clear separation of responsibilities:

HTTP Request
      ↓
  routers/       ← receives and validates input
      ↓
  services/      ← business logic and rules
      ↓
   models/       ← database access (SQLAlchemy)
      ↓
  PostgreSQL

Project Structure

rodrigues-denoni-engenharia/
├── backend/
│   ├── app/
│   │   ├── routers/          # API endpoints (17 modules)
│   │   ├── services/         # Business logic
│   │   ├── models/           # SQLAlchemy models (21 entities)
│   │   ├── schemas/          # Pydantic schemas
│   │   ├── dependencies/     # Dependency injection (auth, permissions)
│   │   ├── core/             # Database, rate limiting
│   │   └── utils/            # Helper functions
│   └── alembic/              # Database migrations
│
├── frontend/
│   └── src/
│       ├── routes/           # Pages (TanStack Router)
│       ├── components/
│       │   └── ui/           # shadcn/ui (24+ components)
│       ├── lib/              # Queries, utils, pdf-generator
│       ├── hooks/            # Custom hooks
│       └── contexts/         # AuthContext
│
├── nginx/                    # Dev and production configs
├── docker/                   # Docker Compose
├── docs/                     # Technical documentation
└── scripts/                  # Backup and maintenance scripts

Development

On the back-end, code is organized into layers: routers for input and validation, services for business rules, models for database access and schemas for Pydantic data contracts. Automated tests with pytest ensure stability.

On the front-end, the interface consumes endpoints via Axios with smart caching by TanStack Query. Forms with Zod validation, visual feedback and a focus on usability complete the experience.

Results

After launch, the system delivered concrete gains:

  • Centralized financial management, eliminating scattered spreadsheets and reducing data entry errors
  • Real-time contract and deadline tracking with a detailed history
  • Significant reduction in time spent on repetitive tasks
  • Greater transparency between teams, making the workflow more agile and reliable
  • CI/CD pipeline with Docker ensuring fast and reproducible deployments