Skip to content

Jani-shiv/MyCycleCare

Repository files navigation

🌸 MyCycleCare

"Women's Health & Wellness Tracker"

Thumbnail


πŸš€ Live Demo β€’ Features β€’ Installation β€’ Tech Stack β€’ Emotional Story β€’ Contributing β€’ License


πŸ’Œ The Story Behind MyCycleCare

"Some days just feel heavier than others…
Your energy dips, your body aches, and emotions run high β€” but the world keeps moving like nothing's changed."

That's the reality for so many women during their cycle. And sadly, it often goes unspoken.

MyCycleCare was born out of the need to feel understood. It's not just a tracker β€” it's your personal wellness companion. From logging painful cramps to celebrating better days, we're here to remind you: your feelings are valid, and your health matters.

With thoughtful features like mood journaling, symptom tracking, and personalized self-care tips, MyCycleCare empowers you to stay in tune with your body β€” gently, beautifully, and without judgment.

Because every cycle tells a story. And you deserve to be heard. 🌸

🌟 Features

✨ Menstrual Cycle Tracker
⏳ Predict periods, log flow, pain, and more.

πŸ“ Mood Journal
Track emotions and mental health with visual logs.

🌿 Wellness Assistant
Receive self-care tips and period-safe wellness advice.

❀️ Symptom Tracker
Log cramps, nausea, bloating, acne, and fatigue.

πŸ“Š Analytics Dashboard
Interactive graphs to uncover body patterns and rhythm.

πŸ›‘οΈ Private & Secure
Your data, your control β€” privacy is our priority.


πŸš€ Installation & Setup

Prerequisites

  • Node.js 18+ and npm
  • MongoDB (local or MongoDB Atlas)
  • Git

Quick Start

# 1. Clone the repository
git clone https://github.com/Jani-shiv/MyCycleCare.git
cd MyCycleCare

# 2. Install frontend dependencies
npm install --legacy-peer-deps

# 3. Install backend dependencies
cd server
npm install
cd ..

Environment Configuration

Backend Environment Variables

Create server/.env file with the following:

# REQUIRED: JWT Secret for authentication tokens
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production

# Database Connection (optional, uses in-memory if not provided)
MONGO_URI=mongodb://localhost:27017/mycyclecare

# Server Configuration
PORT=5000
NODE_ENV=development

⚠️ SECURITY WARNING: Never commit .env files to version control. Use strong, unique JWT secrets in production.

Frontend Environment Variables (Optional)

Create .env in project root if using external APIs:

# AI Services (Optional - for Wellness Assistant)
VITE_OPENAI_API_KEY=your-openai-key
VITE_ANTHROPIC_API_KEY=your-anthropic-key

Running the Application

# Terminal 1: Start backend server
cd server
node index.js

# Terminal 2: Start frontend development server
npm run dev

The application will be available at:


πŸ”’ Security Best Practices

For Development

βœ… Use the provided .env.example as a template
βœ… Never hardcode secrets in source code
βœ… Use strong passwords (8+ chars, upper/lower/number)
βœ… JWT tokens expire after 1 hour for security

For Production

πŸ” Use environment-specific secrets
πŸ” Enable HTTPS/TLS encryption
πŸ” Set NODE_ENV=production
πŸ” Use secure database connections
πŸ” Monitor rate limiting (5 auth requests per 15 minutes)
πŸ” Review Helmet.js security headers


πŸ› οΈ Tech Stack

Frontend

  • React 18 with TypeScript
  • Vite for blazing-fast development
  • Zustand for state management
  • React Router for navigation
  • Framer Motion for animations
  • Recharts for data visualization

Backend

  • Node.js with Express
  • MongoDB with Mongoose
  • JWT for authentication
  • bcryptjs for password hashing
  • Helmet for security headers
  • express-rate-limit for API protection

Security Features

  • πŸ”’ Helmet.js security headers
  • 🚦 Rate limiting (100 req/15min, 5 auth req/15min)
  • πŸ”‘ JWT with 1-hour expiration
  • βœ… Input validation with express-validator
  • πŸ” Password requirements (8+ chars, upper/lower/number)
  • πŸ“ Request body size limits (10MB)

πŸ“ Project Structure

MyCycleCare/
β”œβ”€β”€ src/                    # Frontend source code
β”‚   β”œβ”€β”€ components/         # Reusable components
β”‚   β”œβ”€β”€ pages/             # Page components
β”‚   β”œβ”€β”€ services/          # API services
β”‚   β”œβ”€β”€ store/             # Zustand state management
β”‚   β”œβ”€β”€ types/             # TypeScript interfaces
β”‚   └── utils/             # Utility functions
β”œβ”€β”€ server/                # Backend source code
β”‚   β”œβ”€β”€ models/            # MongoDB models
β”‚   β”œβ”€β”€ routes/            # API routes
β”‚   β”œβ”€β”€ middleware/        # Auth & validation
β”‚   └── index.js           # Server entry point
└── package.json           # Dependencies

πŸ§ͺ Testing

Manual testing guide available at: chrome_testing_guide.md in the brain artifacts directory.

Testing Checklist

βœ… User registration with strong password
βœ… User login/logout
βœ… Cycle tracking (add/edit/delete)
βœ… Mood journal entries
βœ… Dashboard analytics
βœ… Settings & preferences
βœ… Authentication token expiration


🀝 Contributing

We welcome contributions! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Follow existing code style and TypeScript types
  4. Test your changes thoroughly
  5. Commit with clear messages (git commit -m 'Add some AmazingFeature')
  6. Push to your branch (git push origin feature/AmazingFeature)
  7. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ’– Acknowledgments

Built with love to support women's health awareness and wellness. Thank you to all contributors and supporters of this project.


Made with πŸ’œ for women's wellness