Skip to content

Repository files navigation

TODO App with Flutter, Dart, and Express.js

Overview

This is a cross-platform TODO application built with:

  • Frontend: Flutter (Dart) for mobile and web interfaces
  • Backend: Express.js (Node.js) for the API server
  • Database: SQLite

The app allows users to create, read, update, and delete tasks with additional features like task creation, due dates, and completion tracking.

Features

Frontend (Flutter)

  • Decent Material Design UI
  • Create, edit, and delete tasks
  • Mark tasks as complete
  • Ability to add Due dates

Backend (Express.js)

  • RESTful API endpoints
  • User authentication (JWT)
  • CRUD operations for tasks
  • Data validation
  • Database integration
  • Error handling

Prerequisites

  1. Flutter SDK (latest stable version)
  2. Dart SDK
  3. Node.js
  4. npm or yarn
  5. SQLite3

Installation

Frontend (Flutter)

  1. Clone the repository:

git clone https://github.com/yaboywf/Todo-App.git
cd todo-app/flutter_app
  1. Install dependencies:

flutter pub get
  1. Run the app:

flutter run

Backend (Express.js)

  1. Navigate to the backend directory:

cd /path/to/directory
  1. Install dependencies:

npm install

OR

yarn install

  1. Start the server:

npm server.js

Configuration

Frontend

  1. Replace ALL existing IPv4 to the desired IP Address

Backend

  1. Replace ALL existing IPv4 to the desired IP Address
  2. Add your own secret key

API Endpoints

Method Endpoint Description
POST /api/authenticate Login user
GET /api/check_session Check whether the current user is authenticated
GET /api/get_user_data Get user information
POST /api/logout Log out the current user
PUT /api/update_user_data/username Updates the user's username
PUT /api/update_user_data/image Update the user's profile picture
GET /api/get_tasks Get all tasks
POST /api/tasks/create Create a new task
DELETE /api/tasks/delete Delete a task
PUT /api/tasks/update/completed Mark a task as completed / not completed
PUT /api/tasks/update/details Update a task's details like task name or due date
POST /api/create_account Create a new account
DELETE /api/delete_delete Delete an existing account

Project Structure

todo-app/
│
├── .dart_tool
├── .idea
├── .android
├── assets
|   ├── login_bg.jpg
|   ├── logo.png
│   └── profile_bg.webp
├── build
├── lib                             # Flutter frontend
│   ├── account.dart                # Creating an account page
│   ├── functions.dart              # General functions used in the app
|   ├── login.dart                  # Login page
│   ├── profile.dart                # Profile page
│   ├── tasks.dart                  # Tasks page
│   └── main.dart                   # Main entry into app
│
├── node_modules
├── .env
├── .flutter-plugins
├── .flutter-plugins-dependencies
├── .gitignore
├── .metadata
├── analysis_options.yaml
├── database.db                     # SQLite database used in the app
├── encryption.js                   # Handle encryption and decryption of data
├── package.json
├── package-lock.json
├── pubspec.lock
├── pubspec.yaml
├── server.js                       # Express.js backend
└── todo-_app.imi

Author

Dylan Yeo - yaboywf

About

An android app that allow users to make and edit tasks, similar to Google Tasks

Topics

Resources

Stars

Watchers

Forks

Used by

Contributors

Languages