Skip to content

depocoder/YetAnotherCalendar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

32x32_UPD YetAnotherCalendar

GitHub Repo stars GitHub commit activity GitHub last commit Github Action status

GitHub Created At GitHub License GitHub Repo Size

πŸ“ Description

This product replaces Modeus+LMS calendar & Netology calendar, for better experience and more features. YetAnotherCalendar provides a unified interface to manage all your educational events and deadlines in one place.

Preview

{9C731E20-4F0A-46EC-9C84-F5D204A9A1B2}

✨ Features

πŸ”’ Privacy & Security First

  • No Data Storage: We don't store passwords, emails, or personal credentials
  • Privacy-by-Design: No telemetry, tracking, or analytics - we respect your data
  • Error Monitoring: Rollbar integration with sensitive data scrubbing for production reliability
  • Rate Limiting: Built-in protection against login attacks with configurable limits

πŸ”„ Multi-Platform Integration

  • πŸŽ“ Modeus Integration: UTMN university schedule with JWT token support and donor account system
  • πŸ“š LMS Integration: Moodle-based learning management system with course modules and deadlines
  • 🌐 Netology Integration: Professional education platform with webinars and homework tracking
  • πŸ”— Unified API: Single endpoint combining all platforms for seamless experience

πŸ“± Modern User Interface

  • πŸ“± Mobile-First Design: BETA mobile interface with responsive calendar views
  • πŸ—“οΈ Advanced Date Picker: Custom week picker with Russian localization
  • πŸ“‹ Event Details: Rich event modals with source attribution and action buttons
  • ⚑ Real-time Updates: Cache refresh system with visual indicators
  • 🎨 Material Design: Clean, modern interface with intuitive navigation

πŸ“€ Export & Sharing Features

  • πŸ“… ICS Export: Standard calendar format compatible with Google Calendar, Outlook, Apple Calendar
  • πŸ”— MTS Links: Custom webinar link management system for quick access
  • ⏰ Timezone Support: Automatic timezone detection and conversion (Moscow, UTC, local)
  • πŸ’Ύ Smart Caching: Redis-powered caching with 14-day event retention

πŸ› οΈ Technical Excellence

  • πŸ§ͺ Comprehensive Testing: pytest with fixtures for all major components
  • πŸ“ Type Safety: Full mypy typing coverage for better code reliability
  • πŸ” Code Quality: Ruff linting with strict formatting standards
  • 🐳 Container Ready: Docker Compose setup for easy deployment
  • ⚑ High Performance: Async FastAPI backend with Redis caching layer

πŸ‘₯ Authentication & Authorization

  • πŸ” Tutor Authentication: JWT-based secure access for instructors
  • 🚫 Rate Limiting: Protection against brute force attacks on all login endpoints
  • πŸͺ Session Management: Secure cookie handling with proper expiration
  • πŸ”‘ Token Management: Automatic token refresh and validation

πŸ—οΈ Architecture

Backend Stack

  • πŸš€ FastAPI: Modern async Python web framework with automatic API documentation
  • πŸ” Pydantic: Data validation and settings management with type hints
  • πŸ—„οΈ Redis: High-performance caching and session storage
  • 🌐 HTTPX: Async HTTP client for external API integrations
  • πŸ”§ Loguru: Advanced logging with structured output and Rollbar integration

Frontend Stack

  • βš›οΈ React: Component-based UI library with hooks and modern patterns
  • 🎨 SCSS: Advanced CSS preprocessing for maintainable styles
  • πŸ“… Flatpickr: Customizable date picker with internationalization
  • 🍞 React Toastify: User-friendly notification system
  • πŸ“± Responsive Design: Mobile-first approach with adaptive layouts

Infrastructure

  • 🐳 Docker: Containerized deployment with multi-stage builds
  • πŸ”„ Docker Compose: Development and production orchestration
  • ⚑ Uvicorn: ASGI server with auto-reload and performance optimization
  • 🌍 NGINX: Reverse proxy and static file serving (production)

πŸ“š Documentation

πŸš€ Getting Started

Prerequisites

  • Docker and Docker Compose
  • Git

Installation

  1. Clone the repository:

    git clone https://github.com/depocoder/YetAnotherCalendar.git
    cd YetAnotherCalendar
  2. Create .env files from templates:

    cp backend/.env.dist backend/.env
    cp frontend/.env.dist frontend/.env
  3. Configure your environment variables in the .env files

  4. Run the application:

    docker compose up --build

Production Mode

docker compose -f docker-compose.prod.yaml up -d

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Star History

Star History Chart

About

This project was created to replace modeus, netology, lms Calendars. Only for Netology + UTMN students.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 7