A modern Movie App built with Flutter, using GetX for state management, designed with a Neo-Brutalism UI, and structured with Clean Architecture.
- 🎬 Browse popular movies
- 🔍 Search movie by title
- 🧱 Built with GetX for reactive & efficient state management
- 🧼 Follows Clean Architecture: Separation of concerns for better maintainability
- 🎨 Unique and bold Neo-Brutalism design
- ⚡ Fast performance and smooth UI transitions
lib/
├── app/
│ ├── core/ # Core config, network, error, etc.
│ ├── data/ # Data sources, models, repositories (implements)
│ ├── domain/ # Entities, abstract repositories, usecases
│ ├── modules/ # Features (home, search, login, detail_item, etc.)
│ │ └── home/
│ │ ├── controllers/
│ │ ├── views/
│ │ └── bindings/
│ └── routes/ # GetX routing configuration
├── main.dart # Entry point
This structure follows Clean Architecture:
| Layer | Description |
|---|---|
| Data | Handles API, model parsing, local/remote data source |
| Domain | Defines Entity, UseCase, and Repository abstraction |
| Modules | Feature-based folder with controllers, views, and bindings using GetX |
| Core | Global config, shared utils, error handler, network setup, etc |
| Layer | Technology Used |
|---|---|
| State Mgmt | GetX |
| Architecture | Clean Architecture |
| Design | Neo-Brutalism (bold, flat UI) |
| Data | TMDB API |
git clone https://github.com/iZenrix/movie_project.git
cd movie_projectflutter pub getTo use the TMDB API, you need to obtain an API key. Follow these steps:
- Go to TMDB API.
- Sign up or log in.
- Create a new API key.
- Add your API key to the
.envfile in the root directory of the project. - Make sure to add the
.envfile to your.gitignoreto keep it private. - Example
.envfile:
API_BASE_URL=https://api.themoviedb.org/3
API_KEY=your_api_key_here
flutter runTo access the app, you can use the following credentials:
Username: user@example.com
Password: yourpassword
| Home Screen | Search Screen |
|---|---|
![]() |
![]() |
| Login Screen | Detail Screen |
|---|---|
![]() |
![]() |
Pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.



