Skip to content

awais41/WeatherApp3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

🌤 WeatherApp3D AI-Assisted, Production-Structured Flutter Application

A modular Flutter weather application built using Clean Architecture, BLoC, and strict engineering constraints — developed as an exploration of Codex 5.3 as an architectural assistant.

⚡ Built in ~5 hours 🤖 100% AI-generated code under structured constraints 🏗 Designed to simulate production-level architecture

🎯 Project Intent

This is not just a weather app.

This project was created to evaluate:

How AI performs under real architectural constraints

Whether AI can respect separation of concerns

How well it handles async race conditions

Its ability to refactor without breaking boundaries

Its performance in modular scalable setups

The focus was engineering discipline — not feature complexity.

🏗 Architecture Overview

The project follows strict Clean Architecture principles.

lib/ ├── core/ │ ├── constants/ │ ├── network/ │ ├── utils/ │ └── di/ │ ├── features/ │ ├── weather/ │ │ ├── data/ │ │ ├── domain/ │ │ └── presentation/ │ │ │ ├── city_search/ │ └── main.dart 🧱 Layer Responsibilities Presentation Layer

BLoC state management

UI rendering

Animation handling

Sensor interaction

Strict one-file-one-class rule

Domain Layer

Pure business logic

Entities

Repository contracts

Use cases

Data Layer

Remote APIs (OpenWeather)

Geocoding service (Open-Meteo)

Local persistence (SharedPreferences)

Model → Entity mapping

🔄 State Flow (Simplified) UI → Event → BLoC → UseCase → Repository → DataSource → API ↓ Entity → State → UI

Race-condition handling implemented using:

Request versioning

Source priority (manual vs location)

Async result invalidation

✨ Key Engineering Highlights 🧠 Async Safety

Manual city selection cannot be overridden by late location responses (Request versioning implemented inside BLoC)

🌗 Intelligent Icon System

Uses OpenWeather icon code (01d / 01n)

Custom asset naming support

Day/Night switching logic

🌅 Dynamic Sunrise → Sunset System

Progress calculation based on solar time

Animated sun/moon indicator

Gradient sky interpolation

📍 Smart Location Handling

Auto-load by current location

Manual override priority

Offline fallback support

🧩 Feature-Based Modularity

Weather and City Search are independent modules.

🌍 APIs & Services

OpenWeather API (Weather data)

Open-Meteo Geocoding API (Free city search)

Geolocator (device location)

sensors_plus (tilt interaction)

⚙️ Tech Stack

Flutter

BLoC

Dio

GetIt (Dependency Injection)

SharedPreferences

Clean Architecture

Feature-based modular design

🚀 Getting Started Clone git clone https://github.com/awais41/WeatherApp3D.git cd WeatherApp3D Install Dependencies flutter pub get Add OpenWeather API Key

Inside:

lib/core/constants/api_constants.dart

Insert your API key.

Run flutter run 🤖 AI-Assisted Development

This application was generated using Codex 5.3, but under strict constraints:

One file = one class

No logic in UI

Repository pattern enforced

Async race-condition handling required

Modular feature separation mandatory

The experiment demonstrates:

AI is not just a snippet generator — it can assist in structured architectural workflows when guided correctly.

📈 Why This Project Matters

This project demonstrates:

Architectural thinking

Scalable project structuring

AI-guided engineering workflow

Rapid prototyping under constraints

Clean separation of concerns

Async debugging and resolution

For recruiters and engineers reviewing this repository:Media Media (3) Media (2) Media (1)

This is a demonstration of engineering structure, not just UI implementation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages