"Πάρε ανάσα από τη δουλειά" (Take a breath from work)
This project is an experiment in AI-driven development. The entire codebase—from architecture decisions to implementation details—was generated by Claude Code powered by Claude Opus 4.5, with minimal human intervention. The goal was to explore what modern AI assistants can accomplish when given creative freedom to build a complete, production-ready application from scratch.
No developer wrote or debugged the code manually. Instead, the human role was limited to providing high-level requirements, reviewing outputs, and guiding the AI through natural conversation. This serves as a practical case study in AI-assisted software development and its current capabilities.
A Vue 3 application by Oxygen that helps users maximize their vacation days by finding optimal leave periods around Greek public holidays. The UI is fully in Greek.
- Smart Leave Optimization - Finds all leave periods for the year ranked by efficiency (days off / leave days used)
- Dual Sorting - Sort opportunities by efficiency (best value) or chronologically by date
- Orthodox Easter Calculation - Accurate calculation of movable holidays based on Orthodox Easter
- Custom Holidays - Add local holidays manually or search 130+ Greek towns for patron saint days
- Annual Leave Plan - Save multiple opportunities to build a complete yearly plan
- Custom Periods - Add your own leave periods with optional labels (e.g., "Trip to America")
- Custom Period Badges - Custom periods are visually distinct with "Προσαρμοσμένο" badge
- Conflict Detection - Warns when adding overlapping periods
- Remaining Days Tracking - Track used vs remaining days from your total allocation
- URL Sharing - Share your complete plan setup via compressed URL
- Share as Image - Generate PNG cards for any opportunity
- Calendar Export - Download your annual plan as .ics file for Google Calendar/Outlook
- Leave Request Generator - Generate formal Greek leave request letters
- Year Comparison - Compare holidays across up to 3 years with weekend indicators
- Parent Mode - Optimize for family time during school breaks (Christmas & Easter)
- Holy Spirit Toggle - Include/exclude Agios Pneumatos based on your company policy
- Dark Mode - Full dark mode support with persistence
- Vue 3 with Composition API (
<script setup>) - TypeScript
- Tailwind CSS 4
- Vite 7
- date-fns with Greek locale
- html2canvas for image generation
- Vitest for unit testing
- Playwright for E2E testing (Chromium, Firefox, WebKit)
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/isarantoglou/anasa-app.git
cd anasa-app
# Install dependencies
npm install
# Start development server
npm run devnpm run dev # Start development server
npm run build # Type-check and build for production
npm run preview # Preview production build locally
npm run test # Run unit tests in watch mode
npm run test:run # Run unit tests once
npm run test:e2e # Run Playwright E2E tests
npm run test:e2e:ui # Run E2E tests with interactive UIe2e/ # Playwright E2E tests
├── app.spec.ts # Core app smoke tests
└── workflows.spec.ts # User workflow tests
src/
├── components/ # Vue components
│ ├── modals/ # Modal dialogs
│ │ ├── ConflictWarningModal.vue
│ │ ├── LeaveRequestModal.vue
│ │ ├── ShareCard.vue
│ │ └── YearComparisonModal.vue
│ ├── AnnualPlanSection.vue
│ ├── CustomHolidaysCard.vue
│ ├── CustomPeriodForm.vue # Form to add custom leave periods
│ ├── HolidayTable.vue
│ ├── OpportunityCard.vue
│ ├── PublicHolidaysCard.vue
│ └── SettingsCard.vue
├── composables/ # Vue composables
│ ├── useAnnualPlan.ts # Annual plan management & conflict detection
│ ├── useCustomPeriod.ts # Custom period creation & validation
│ ├── useGreekHolidays.ts # Greek public holidays calculation
│ ├── useLeaveOptimizer.ts # Leave optimization algorithm
│ ├── usePersistedState.ts # localStorage persistence utilities
│ ├── useShareableState.ts # URL-based state sharing with LZ-String
│ └── useYearComparison.ts # Year comparison utilities
├── data/
│ ├── patronSaints.ts # 130+ Greek towns with patron saints
│ └── schoolHolidays.ts # School calendar for Parent Mode
├── types.ts # TypeScript type definitions
└── style.css # "Modern Aegean" design system
The optimizer uses a sliding window algorithm to find optimal leave periods. It calculates:
- Orthodox Easter using the Meeus/Jones/Butcher algorithm with Julian to Gregorian conversion
- Fixed Holidays - New Year, Epiphany, Independence Day, Labor Day, Assumption, Oxi Day, Christmas
- Movable Holidays - Clean Monday, Good Friday, Easter Monday, Holy Spirit Monday
- Efficiency Ratio - Total days off divided by leave days used
Contributions are welcome! Please read our Contributing Guidelines before submitting a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
isarantoglou - GitHub