Page 1 of 4
thirsty
Introduction
The project "thirsty" is a notification service designed to remind users to drink water at regular intervals. The service is straightforward, focusing on user-friendly features such as mobile login, quick alarm sounds, and optional notifications. This document outlines the system requirements for the "thirsty" project, ensuring a seamless user experience.
System Overview
The "thirsty" system is designed to encourage hydration by sending users reminders to drink water. Users can register using their mobile number, select a reminder interval, and pay a nominal fee to access the service. The system will then send a 1-second alarm sound at the chosen intervals from 8 AM to 8 PM. Users have the option to disable notifications, but the alarm sound remains mandatory.
Functional Requirements
- As a User, I should be able to register using my mobile number and name.
- As a User, I should receive a verification PIN on my mobile number.
- As a User, I should be able to enter the verification PIN to complete registration.
- As a User, I should be able to select a reminder interval of one, one and a half, or two hours.
- As a User, I should be able to pay a charge of 29 rupees to access the service.
- As a User, I should receive a 1-second alarm sound at the selected intervals from 8 AM to 8 PM.
- As a User, I should be able to disable notifications via an abort button after logging in.
Page 2 of 4
User Personas
- User: The primary user who registers, selects reminder intervals, pays for the service, and receives notifications.
Visuals Colors and Theme
- primary: #1A73E8 (a vibrant blue to symbolize water and trust)
- primary_light: #E8F0FE (a light blue for hover states and secondary UI)
- secondary: #FF6F61 (a coral hue for emphasis and links)
- accent: #FFD700 (a bright gold for CTAs and active states)
- highlight: #FFA500 (an orange for hover states and notifications)
- bg: #FFFFFF (a clean white background)
- surface: rgba(240, 248, 255, 0.8) (a light blue card/panel background)
- text: #333333 (a dark gray for primary text)
- text_muted: #777777 (a softer gray for secondary text)
- border: rgba(200, 200, 200, 0.5) (a subtle gray border)
Signature Design Concept
The "thirsty" homepage will feature an interactive water ripple effect using @react-three/fiber and @react-three/drei. As users move their cursor across the screen, ripples will form, creating a dynamic water-like surface. Each ripple will reveal different sections of the website, such as registration, payment, and settings. This engaging interaction will symbolize the core theme of hydration and make the landing page memorable. Users can click on ripples to dive deeper into specific features, with smooth transitions and animations powered by framer-motion.
Page 3 of 4
Interaction Model & Motion Direction
The landing page will utilize a "parallax" interaction model, with layered depth and scroll-triggered animations. Decorative water ripple effects will translate at different speeds, creating a sense of immersion. Internal pages, such as user settings and payment, will adopt a "static" model for clarity and ease of use.
Non-Functional Requirements
- The system must handle concurrent user registrations and notifications efficiently.
- The alarm sound must be delivered with minimal latency.
- Payment processing should be secure and reliable.
- The user interface should be responsive and accessible across devices.
Tech Stack
- Frontend: React for Web
- Backend: Python, FastAPI
- Database: MySQL or MariaDB, using alembic for migrations
- AI Models: Not applicable
- Local Orchestration: Docker, docker-compose
- Server-side Orchestration: Kubernetes
Page 4 of 4
Assumptions and Constraints
- Users will have access to a mobile device for registration and verification.
- The service will operate within the timezone of India (IST).
- Payment will be processed in Indian Rupees (INR).
Glossary
- User: An individual who registers and uses the "thirsty" service.
- Alarm Sound: A 1-second audio notification reminding users to drink water.
- Verification PIN: A code sent to the user's mobile number for registration confirmation.
- Abort Button: An option for users to disable notifications while maintaining the alarm sound.
No comments yet. Be the first!