Skip to content

bryancastillo10/water-analytics

Repository files navigation

🌊 Water Analytics Web App

This TypeScript-based web application is designed for modern water analytics monitoring, ensuring scalability and maintainability through well-structured software development practices. The goal is to provide an efficient and reliable solution for monitoring water data with a robust and maintainable architecture.

1. 💻 Client Side (Frontend)

The client side of this application is built with React and TypeScript. Additional tools used include:

  • React-Redux – Global state management
  • Redux Toolkit Query – API call handling
  • Recharts – Interactive chart visualization
  • TanStack React Table – Efficient table rendering
  • Phosphor Icons – Icon library
  • Tailwind CSS – Styling components and layouts

The folder structure is organized based on features, with each feature containing similar subfolders such as components, api, hooks, and utils.

Meanwhile, globally shared components and scripts are placed in dedicated folders outside the feature-based structure. Through this structure, we can ensure modularity & maintainability of the app:

#client/src

├── 📦 app
│   ├── App.tsx
│   ├── CustomToastProvider.tsx
│   ├── PageNotFound.tsx
│   ├── ProtectedRoute.tsx
│   ├── Providers.tsx
│   └── 📂 routes
├── 📷 assets
│   └── 📂svg
├── 🧩 components
│   ├── 📂 common
│   ├── 📂 layout
│   ├── 📂 navigation
│   ├── 📂 pages
│   └── 📂 ui
├── 🌐 features
│   ├── 📂 app-settings
│   ├── 📂 auth
│   ├── 📂 dashboard
│   ├── 📂 sites
│   ├── 📂 stickynote
│   ├── 📂 thresholds
│   ├── 📂 user
│   └── 📂 waterquality
├── 🪝hooks
└── 📖lib
    ├── 📂 mappings
    └── 📂 redux

2. 🌐 Server Side (Backend)

The server side of this application is built with Node-TS and Express. Libraries and other tools were used to ensure efficient database management, authentication, security, and file handling:

  • Prisma ORM – Handle database query & communication with the server
  • MongoDB - Scalable No-SQL Database
  • Helmet – Enhances security by managing HTTP headers
  • Jsonwebtoken & Cookie-Parser – for secure authentication and session management
  • Multer – Middleware for handling file uploads
  • Cloudinary SDK – Cloud-based storage bucket for image uploads
  • Nodemailer – Manages email sending such as for password reset feature
#server
├── 🔑 auth
│   └── core
│       ├── 📂entity
│       ├── 📂interface
│       └── 📂service
├── 📈 dashboard
│   ├── core
│   │   ├── 📂 entity
│   │   ├── 📂 interface
│   │   └── 📂 service
│   └── utils
├── 🏢 infrastructure
│   ├── 📁 database
│   ├── 📁 errors
│   ├── 📁 express-server
│   ├── 📁 middleware
│   └── 📁 prisma
├── 📏 measurement
│   └── core...
├── 🗒️ notes
│   └── core...
├── 🌱seed
│   └── data
├── 📌site
│   └── core...
├── ⚠️ threshold
│   └── core...
├── 🙂user
│   └── core...
└── 🛠️ utils

3. Preview (Screenshots)

water-analytics-screenshot-1

water-analytics-screenshot-2

4. User Features

Static Badge

This app supports different user roles. Administrators can view all accounts, adjust user privileges, and remove accounts as needed.

Static Badge

When you sign up, sample data is automatically added so you can start exploring the app right away.

Static Badge

Easily manage information for your water quality monitoring sites. Add, update, or remove site details to keep your data organized.

Static Badge

View clear and simple tables that display water quality data for each site, making it easy to track changes over time.

Static Badge

Set your own acceptable levels for water quality measures. This lets the dashboard highlight when readings passes the regulation or it is above threshold.

Static Badge

The dashboard presents interactive charts and summaries that compare current water quality readings with your set limits.

Static Badge

Keep track of your thoughts with built-in sticky notes that you can add, edit, and move around easily.

5. Software System Architecture

water-analytics-architecture

6. Database Schema

water-analytics-schema

7. API Documentation

This project demonstrates REST API for managing authentication, user data, water quality dashboard calculations, site, notes, threshold and user profile CRUD operation.

📖 View Full API Documentation

8. License

MIT License

Copyright (c) 2025 Bryan Castillo

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

9. Developer

This project was built as part of my portfolio to showcase my full-stack web development skills using TypeScript, MERN, Prisma, and Tailwind CSS.

⚠️ Important Notice

This application relies on environmental variables for authentication, API access, and external services (e.g., database, storage). These variables are not included in this repository for security reasons. If you are interested in running or contributing to this project, please contact me for more details.

🔗 Developer Contacts:

Static Badge

LinkedIn: Bryan Castillo

About

A Dashboard Analytics Web App For Water Quality Monitoring Built with MERN-Typescript

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages