https://github.com/bryancastillo10/water-analytics
A Dashboard Analytics Web App For Water Quality Monitoring Built with MERN-Typescript
https://github.com/bryancastillo10/water-analytics
dashboard-analysis fullstack-development mern-stack prisma redux-toolkit web-application
Last synced: over 1 year ago
JSON representation
A Dashboard Analytics Web App For Water Quality Monitoring Built with MERN-Typescript
- Host: GitHub
- URL: https://github.com/bryancastillo10/water-analytics
- Owner: bryancastillo10
- Created: 2024-11-14T08:57:39.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-25T01:43:07.000Z (over 1 year ago)
- Last Synced: 2025-02-25T02:37:35.439Z (over 1 year ago)
- Topics: dashboard-analysis, fullstack-development, mern-stack, prisma, redux-toolkit, web-application
- Language: TypeScript
- Homepage: https://water-analytics.fly.dev/
- Size: 1.25 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## π 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:
```bash
#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
```bash
#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)


### 4. User Features

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

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

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

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

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

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

>Keep track of your thoughts with built-in sticky notes that you can add, edit, and move around easily.
### 5. 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](server/docs/index.md)**
### 6. 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.
### 7. 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:
[](https://github.com/bryancastillo10)
LinkedIn: [Bryan Castillo ][2]
[2]:[https://www.linkedin.com/in/bryan-castillo-479101171/]