Todo App is a simple task management application built using Expo React Native with a clean architecture implementation.
- Add, delete, and mark tasks as complete.
- Filter tasks by status: all, completed, uncompleted.
- Local storage using AsyncStorage.
- Clean architecture implementation to separate domain, data, and presentation layers.
- Node.js (v16 or later)
- Expo CLI (v6.3.14 or later)
- Git
git clone https://github.com/M-Julius/Todo-App.git
cd Todo-App
yarn install
Once all dependencies are installed, you can run the application using the command:
npx expo start
The app will run in your browser. You can choose to run it on an Android or iOS emulator, or on a physical device using the Expo Go app.
To run the unit tests, use the command:
yarn test
This project follows a clean architecture approach, separating code into layers to ensure scalability and maintainability.
struktur ├── assets/ # Assets like images ├── src/ │ ├── data/ │ │ └── repositories/ # Data access from AsyncStorage │ ├── domain/ │ │ ├── entities/ # Todo model │ │ └── usecases/ # Business logic for Todo │ ├── presentation/ │ │ ├── components/ # UI components (TodoItem, etc.) │ │ ├── screens/ # UI screens (TodoScreen) │ │ └── themes/ # Themes (colors, etc.) └── App.tsx # Application entry point
- assets/: Contains resources like icons and images.
- data/: Contains repository implementations for saving and retrieving data from AsyncStorage.
- domain/: Contains business entities (models) and use cases that define the application logic.
- presentation/: Contains UI components and screens that display data and interact with the user.
- App.tsx: The main file that starts the application and sets up navigation.
This application follows clean architecture, which separates business logic (domain) from data storage (data) and presentation (UI). This makes the code easier to maintain, test, and modify without affecting other parts of the application.
- Expo
- React Native
- TypeScript
- AsyncStorage
- Jest for testing