Skip to content

A cross-platform app designed to learn and explore mobile development. This project covers Android (Kotlin), iOS (Swift), React Native, and Flutter. Includes a Node.js backend with GraphQL for data management. Ideal for gaining hands-on experience with various mobile development technologies and architectural patterns.

License

Notifications You must be signed in to change notification settings

shabib87/DailyHabitTracker

Repository files navigation

Daily Habit Tracker App Development Plan

Project Overview

This project aims to develop a Daily Habit Tracker app with cross-platform compatibility, focusing on real-life app development practices. The app will be developed across five weekends, covering the backend and four mobile platforms (Android, iOS, React Native, and Flutter). The project will use TypeScript for the backend and focus on learning key concepts in mobile development, state management, GraphQL, and API integration.

This repository is designed not only to help me deepen my knowledge of various mobile technologies but also to guide and support the community on their own development journeys. This project serves as a practical learning tool and a shared resource for anyone interested in mobile development.

Learning Objectives

  • Explore Multiple Technologies: Gain hands-on experience with Android development using Kotlin, iOS development with Swift, and cross-platform solutions with React Native and Flutter.
  • Backend Integration: Learn to build and interact with a Node.js backend, utilizing GraphQL for efficient data management.
  • Mobile-First Design: Implement mobile-first design principles to ensure a seamless user experience across all devices.

Community Impact

  • Share Knowledge: Document and share my learning process to provide valuable insights and practical advice to others exploring similar technologies.
  • Provide Resources: Offer guidance and resources through this repository to help the community understand key concepts and overcome common challenges in mobile development.
  • Foster Collaboration: Encourage contributions and discussions to enhance collective learning and improvement of the project.

By working on this project, you’ll not only advance your own skills but also have access to a growing repository of knowledge that can benefit other developers. Feel free to explore, contribute, and join the journey of mastering mobile development technologies!

Project Goals

  • Develop a functional Daily Habit Tracker app.
  • Learn and apply foundational to advanced concepts in mobile development.
  • Ensure cross-platform compatibility with Android, iOS, React Native, and Flutter.
  • Utilize a TypeScript-based Node.js backend with GraphQL and JWT authentication.

Tech Stack

  • Backend: Node.js (TypeScript), Express, Apollo Server (GraphQL), PostgreSQL, JWT.
  • Android: Kotlin, Apollo Android.
  • iOS: Swift, SwiftUI, Apollo iOS.
  • React Native: TypeScript, Apollo Client, React Native CLI.
  • Flutter: Dart, Flutter, graphql_flutter.
  • Testing: Jest, Espresso, XCTest, Flutter Testing Tools.

Project Structure

The project will be organized in a single GitHub repository with the following structure:

/habit-tracker-backend  # Backend with TypeScript
/habit-tracker-android  # Android app
/habit-tracker-ios      # iOS app
/habit-tracker-react-native  # React Native app
/habit-tracker-flutter  # Flutter app
/docs  # Documentation

Documentation

  • UX Plan: Detailed UX requirements and design considerations for the app.
  • Contribution Guide: Guidelines for contributing to the project.

Development Timeline

Weekend 1: Backend Development

  • Setup: Initialize Node.js with TypeScript, set up project structure.
  • Database: Design PostgreSQL schema for Users, Habits, and Trackers.
  • GraphQL: Define and implement GraphQL schema and resolvers.
  • Authentication: Implement JWT-based authentication.
  • Testing: Write unit tests for API endpoints.

Weekend 2: Android App Development

  • Setup: Create Android project, configure dependencies.
  • Networking: Implement Apollo Android for GraphQL communication.
  • UI/UX: Design habit tracking screens.
  • Habit Management: Implement CRUD operations and analytics.
  • Testing: Write UI and integration tests.

Weekend 3: React Native App Development

  • Setup: Initialize React Native project with TypeScript.
  • State Management: Use React Context or Redux.
  • UI/UX: Design cross-platform compatible UI.
  • Habit Management: Implement CRUD operations and notifications.
  • Testing: Write component and integration tests.

Weekend 4: Flutter App Development

  • Setup: Create a Flutter project.
  • GraphQL Integration: Use graphql_flutter for API communication.
  • UI/UX: Implement responsive layouts.
  • Habit Management: Implement CRUD operations and notifications.
  • Testing: Write widget and integration tests.

Weekend 5: iOS App Development

  • Setup: Initialize iOS project with Swift and SwiftUI.
  • Apollo Integration: Set up Apollo iOS for GraphQL.
  • UI/UX: Design SwiftUI screens with smooth transitions.
  • Habit Management: Implement CRUD operations and notifications.
  • Testing: Write unit and UI tests.

Version Control and CI

  • Branches: Use feature branches for each platform.
  • Continuous Integration: Set up GitHub Actions for automated testing and build processes.
  • Documentation: Maintain detailed documentation for backend setup, API schema, and platform-specific instructions.

Final Deliverables

  • Fully functional Daily Habit Tracker app for Android, iOS, React Native, and Flutter.
  • A robust TypeScript-based backend with GraphQL and JWT authentication.
  • Comprehensive testing and documentation.

About

A cross-platform app designed to learn and explore mobile development. This project covers Android (Kotlin), iOS (Swift), React Native, and Flutter. Includes a Node.js backend with GraphQL for data management. Ideal for gaining hands-on experience with various mobile development technologies and architectural patterns.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published