This application was originally developed as an assessment for Shoreline Wind's Lead Technical Developer position in September 2023. Since then, it has been continuously maintained and evolved into a comprehensive, production-ready weather application with modern development practices and infrastructure.
- Modern Weather Interface: Clean, responsive UI built with React 18 and TypeScript
- Real-time Weather Data: Integration with 7timer.info weather API
- Multiple Forecast Views: Current weather, 5-day forecast, and 7-day forecast
- Responsive Design: Mobile-first approach with Tailwind CSS
- Comprehensive Testing: Unit tests with Jest and E2E tests with Playwright
- CI/CD Pipeline: Automated testing, linting, and deployment with GitHub Actions
- Frontend: React 18.2.0 with TypeScript
- Build Tool: Vite 7.0.5 for fast development and optimized builds
- Styling: Tailwind CSS with PostCSS processing
- Routing: React Router for client-side navigation
- State Management: Custom React state management
- Package Manager: Yarn 3.6.4 with Corepack
- Testing Framework: Jest for unit tests, Playwright for E2E tests
- Linting: ESLint with React and TypeScript rules
- Type Checking: Strict TypeScript configuration
- CI/CD: GitHub Actions with multi-node testing matrix
- Code Quality: Automated linting, type checking, and testing
- Build Optimization: Production builds with asset optimization
- Dependency Management: Yarn Berry with zero-installs architecture
- Node.js 18.x or 20.x
- Yarn (managed via Corepack)
# Enable Corepack (if not already enabled)
corepack enable
# Install dependencies
yarn install
# Start development server
yarn devThe application will be available at http://localhost:5173
yarn dev # Start development server
yarn build # Build for production
yarn preview # Preview production build locallyyarn lint # Check for linting errors
yarn lint:fix # Fix linting errors automatically
yarn tsc # Type checking without emitting filesyarn test # Run unit tests
yarn test:watch # Run unit tests in watch mode
yarn test:e2e # Run end-to-end testsshoreline-assessment/
βββ .github/workflows/ # GitHub Actions CI/CD pipeline
βββ src/
β βββ components/ # Reusable React components
β βββ hooks/ # Custom React hooks and utilities
β βββ pages/ # Page components for routing
β βββ routes/ # React Router configuration
β βββ services/ # API services and external integrations
β βββ state/ # State management
β βββ assets/ # Static assets and SVG components
βββ tests/
β βββ unit/ # Jest unit tests
β βββ e2e/ # Playwright E2E tests
βββ public/ # Static public assets
The project includes a comprehensive GitHub Actions pipeline that:
- Multi-Node Testing: Tests on Node.js 18.x and 20.x
- Code Quality Checks: Runs ESLint and TypeScript compiler
- Automated Testing: Executes unit tests and E2E tests
- Build Verification: Ensures production builds are successful
- Artifact Management: Stores build artifacts and test reports
- Lint & Type Check: Code quality validation
- Unit Tests: Jest test suite execution
- Build: Production build verification
- E2E Tests: End-to-end testing with Playwright
- Framework: Jest with TypeScript support
- Coverage: Component logic, utilities, and hooks
- Location:
tests/unit/
- Framework: Playwright
- Coverage: Complete user workflows and integrations
- Location:
tests/e2e/
The application integrates with the 7timer.info API to provide:
- Current weather conditions
- 5-day detailed forecasts
- 7-day extended forecasts
- Location-based weather data
- Strict type checking enabled
- Modern ES2020 target with DOM libraries
- React JSX transformation
- Vite for fast development and optimized production builds
- PostCSS with Tailwind CSS processing
- Asset optimization and code splitting
- Infrastructure Modernization: Complete CI/CD pipeline implementation
- Package Manager Migration: Switched to Yarn 3.6.4 with Corepack
- Testing Enhancement: Consolidated test structure and added E2E tests
- Code Quality: Fixed React hooks violations and TypeScript issues
- Automation: GitHub Actions pipeline with comprehensive quality checks
- Upgraded packages and setup to use the latest versions
- Refactoring: Moved API calls to dedicated service files
- Added better tooltip to the 5-day forecast
- Made minor UI changes to the sidebar
- Added lint checks and unit tests
- Enhanced UX: Loading states with descriptive messages
- User Location: Header with location-based information and daily content
- Extended Content: Quotes, fun facts, and additional contextual information
- Branding: Footer with contact information and project details
- Performance optimization with React.memo and useMemo
- Enhanced error handling and user feedback
- Progressive Web App (PWA) capabilities
- Advanced caching strategies for weather data
This project maintains high code quality standards:
- Code Style: Follow ESLint rules and TypeScript best practices
- Testing: Add tests for new features and bug fixes
- Documentation: Update README and inline comments
- CI/CD: Ensure all pipeline checks pass before merging
This project was developed as part of a technical assessment and is maintained for educational and portfolio purposes.