Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Task Flow

A full-stack task management application consisting of a Node.js/Express backend and a native Android client, with push notification support via Firebase Cloud Messaging.

Project Structure

project/
├── backend/        # REST API server
└── android/        # Native Android app

Backend

Built with Express, TypeScript, Prisma ORM, and MySQL. Deployed on Vercel.

Features

  • Authentication — Register, login, logout, JWT access tokens + refresh tokens
  • Tasks — Create, read, update, delete tasks with priority (LOW, MEDIUM, HIGH) and status (PENDING, IN_PROGRESS, COMPLETED)
  • Categories — Organize tasks into color-coded, icon-tagged categories
  • Reminders — Schedule reminders for tasks; processed every 5 minutes via a Vercel cron job
  • Push Notifications — Firebase Cloud Messaging (FCM) token management for mobile push alerts
  • Security — Helmet, CORS, rate limiting (1000 req / 15 min), bcrypt password hashing, Zod request validation

Tech Stack

Layer Technology
Runtime Node.js + TypeScript
Framework Express
ORM Prisma
Database MySQL (PlanetScale-compatible)
Auth JWT (access + refresh tokens)
Notifications Firebase Admin SDK
Deployment Vercel

Getting Started

Prerequisites: Node.js 18+, a MySQL database, Firebase project

  1. Install dependencies:

    cd backend
    npm install
  2. Set up environment variables — create a .env file:

    DATABASE_URL="mysql://..."
    JWT_SECRET="your-access-token-secret"
    JWT_REFRESH_SECRET="your-refresh-token-secret"
    FIREBASE_PROJECT_ID="your-firebase-project-id"
    FIREBASE_PRIVATE_KEY="your-firebase-private-key"
    FIREBASE_CLIENT_EMAIL="your-firebase-client-email"
  3. Push the database schema:

    npm run db:push
  4. Start the development server:

    npm run dev

API Endpoints

Method Endpoint Auth Description
GET /api/health No Health check
POST /api/auth/register No Register a new user
POST /api/auth/login No Login and receive tokens
POST /api/auth/refresh No Refresh access token
POST /api/auth/logout No Invalidate refresh token
PUT /api/auth/fcm-token Yes Update FCM device token
GET/POST /api/tasks Yes List / create tasks
GET/PUT/DELETE /api/tasks/:id Yes Get / update / delete task
GET/POST /api/categories Yes List / create categories
GET/PUT/DELETE /api/categories/:id Yes Get / update / delete category
GET/POST /api/reminders Yes List / create reminders
DELETE /api/reminders/:id Yes Delete a reminder
POST /api/reminders/process Cron Process and send due reminders

Scripts

Command Description
npm run dev Start dev server with hot reload
npm run build Compile TypeScript
npm start Run compiled output
npm run db:generate Regenerate Prisma client
npm run db:push Push schema changes to database

Android

A native Android app built with Kotlin, Jetpack Compose, and a clean architecture (data / domain / presentation layers).

Features

  • Full task, category, and reminder management via the REST API
  • Offline-first with Room local database
  • Push notifications via Firebase Cloud Messaging
  • Background sync with WorkManager
  • JWT auth with automatic token refresh

Tech Stack

Layer Technology
Language Kotlin
UI Jetpack Compose + Material 3
Architecture MVVM + Clean Architecture
DI Hilt
Local DB Room
Networking Retrofit + OkHttp
Notifications Firebase Messaging
Background work WorkManager
State / async Coroutines + Flow
Token storage DataStore Preferences

Getting Started

Prerequisites: Android Studio Hedgehog+, JDK 17, a Firebase project with google-services.json

  1. Place your google-services.json in android/app/.

  2. Set the backend base URL in android/app/build.gradle.kts:

    buildConfigField("String", "BASE_URL", "\"https://your-api-url\"")
  3. Open the android/ folder in Android Studio, sync Gradle, and run on a device or emulator (API 26+).


Deployment

The backend is configured for Vercel deployment (vercel.json). A cron job runs POST /api/reminders/process every 5 minutes to deliver pending reminders.

vercel deploy

About

Development of a Mobile Application for Time Management

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages