Skip to content

A modern web application for discovering countries around the world with search capabilities, continental filtering, and displaying complete information for each country🌏

Notifications You must be signed in to change notification settings

PouyaBirvand/CountryApp

Repository files navigation

🌍 CountryApp - Modern Country Explorer

A cutting-edge web application built with the latest React technologies to explore countries worldwide. This project showcases modern web development practices and powerful features for an exceptional user experience.

CountryApp Preview

πŸ› οΈ Tech Stack

Core Technologies

  • βš›οΈ React 19 - Latest version with enhanced features
  • πŸ›£οΈ React Router v7 - For seamless client-side routing
  • πŸ“± TypeScript - For type-safe development
  • 🎨 TailwindCSS - Utility-first CSS framework
  • πŸ”„ SWR - For efficient data fetching and caching

Development Tools

  • ⚑ Vite - Next-generation frontend tooling
  • 🎯 TypeScript - Static type checking
  • 🎨 PostCSS - CSS processing
  • πŸ”§ Autoprefixer - CSS compatibility
  • πŸ“¦ React Icons - Comprehensive icon library

✨ Key Features

  • πŸ” Advanced country search functionality
  • 🌎 Continental filtering system
  • 🎭 Dynamic theme switching (Dark/Light mode)
  • πŸ“± Fully responsive design
  • ⚑ Lightning-fast performance
  • πŸ”„ Real-time data updates
  • 🌐 SEO optimized

πŸš€ Quick Start

Prerequisites

  • Node.js (v18 or higher)
  • npm/yarn/pnpm

Installation

  1. Clone the repository:
git clone https://github.com/PouyaBirvand/CountryApp.git

πŸ“œ Available Scripts

  • npm run dev - Start development server
  • npm run build - Create production build
  • npm start - Serve production build
  • npm run typecheck - Run type checking
  • npm run format - Format code with Prettier

πŸ—οΈ Project Structure

app/
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ about.tsx
β”‚   β”œβ”€β”€ countries.tsx
β”‚   β”œβ”€β”€ country.tsx
β”‚   β”œβ”€β”€ home.tsx
β”‚   └── components/
β”‚       └── navbar.tsx
β”œβ”€β”€ app.css
β”œβ”€β”€ root.tsx
└── routes.ts

πŸ“± Responsive Design

  • Mobile-first approach
  • Breakpoints for all device sizes
  • Optimized layouts for different screen sizes

⚑ Performance Optimizations

  • Code splitting with React Router
  • SWR for efficient data caching
  • Lazy loading of images
  • Optimized bundle size

πŸ”’ Security

  • Type-safe development with TypeScript
  • Secure API calls
  • XSS protection
  • CORS handling

🀝 Contributing

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

πŸ“ˆ Future Enhancements

  • Advanced filtering options
  • Country comparison feature
  • Interactive maps integration
  • Offline support
  • Multi-language support

πŸ“„ License

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

πŸ‘¨β€πŸ’» Author

Pouya Birvand

πŸ™ Acknowledgments


⭐ Star this repository if you find it helpful!

πŸ“ For detailed documentation and API references, check out our Wiki.