Home
Softono

NS Todolist

Open source Vue
18
Stars
1
Forks
0
Issues
0
Watchers
7 months
Last Commit

 About NS Todolist

A modern, full-stack todo list application built with Nuxt 3 frontend and Strapi v5 as the headless CMS backend. This project demonstrates the seamless integration between modern frontend frameworks and headless CMS solutions, showcasing CRUD operations, real-time updates, and beautiful UI components.

Platforms

Web Self-hosted

Languages

Vue

Links

Need Help Installing NS Todolist?

We provide expert installation service for this software. Our team will install, configure, and secure NS Todolist on your server. plans start at just $30.

NS Todolist

View on GitHub

NS-Todolist

A modern, full-stack todo list application built with Nuxt 3 frontend and Strapi v5 as the headless CMS backend. This project demonstrates the seamless integration between modern frontend frameworks and headless CMS solutions, showcasing CRUD operations, real-time updates, and beautiful UI components.

✨ Features

  • πŸ“ Complete Todo Management - Create, read, update, and delete todos
  • 🎨 Modern UI - Built with Shadcn/ui components and Tailwind CSS
  • πŸŒ“ Dark/Light Mode - Toggle between themes with persistent storage
  • πŸ“± Responsive Design - Works perfectly on desktop and mobile
  • πŸ”„ Real-time Updates - Instant synchronization with Strapi backend
  • πŸš€ SSR/SPA Support - Leverages Nuxt 3's hybrid rendering capabilities
  • πŸ“Š Demo Page - Interactive examples of all Strapi composables
  • πŸ”§ TypeScript Support - Full type safety throughout the application

πŸ› οΈ Tech Stack

Frontend

  • Nuxt 3 - The intuitive Vue framework
  • Vue 3 - Progressive JavaScript framework
  • TypeScript - Type-safe JavaScript
  • Tailwind CSS - Utility-first CSS framework
  • Shadcn/ui - Re-usable components built with Radix Vue and Tailwind CSS
  • Reka UI - Vue implementation of Radix UI primitives
  • Lucide Vue - Beautiful & consistent icon toolkit
  • VueUse - Collection of essential Vue composition utilities

Backend

  • Strapi v5 - Leading open-source headless CMS
  • Content Type: Todo - Custom content type with title, description, and completion status

Development Tools

  • @nuxtjs/strapi - Official Nuxt module for Strapi integration
  • @nuxtjs/color-mode - Dark and light mode for Nuxt
  • Class Variance Authority - For creating type-safe component variants
  • Tailwind Merge - Utility for merging Tailwind CSS classes

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and pnpm
  • Strapi v5 backend running on http://localhost:1337

Installation

  1. Clone the repository

    git clone https://github.com/joebertcerezo/NS-Todolist.git
    cd NS-Todolist
    
  2. Install dependencies

    pnpm install
    
  3. Start the development server

    pnpm dev
    
  4. Open your browser Navigate to http://localhost:3000

πŸ“ Project Structure

NS-Todolist/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ui/           # Shadcn/ui components
β”‚   β”‚   β”œβ”€β”€ AddButton.vue # Custom todo add button
β”‚   β”‚   └── VIcon.vue     # Icon component wrapper
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ index.vue     # Main todo list page
β”‚   β”‚   └── demo.vue      # Strapi composables demo
β”‚   β”œβ”€β”€ types/
β”‚   β”‚   └── todo.ts       # TypeScript interfaces
β”‚   β”œβ”€β”€ assets/css/       # Styling files
β”‚   └── lib/
β”‚       └── utils.ts      # Utility functions
β”œβ”€β”€ public/               # Static assets
└── Configuration files

🎯 Key Functionalities

Todo Operations

  • Create Todo - Add new todos with title and optional description
  • Mark Complete - Toggle completion status with visual feedback
  • Update Todo - Edit existing todo details
  • Delete Todo - Remove todos with confirmation

UI Features

  • Theme Toggle - Switch between dark and light modes
  • Responsive Layout - Adapts to different screen sizes
  • Loading States - Visual feedback during API operations
  • Error Handling - User-friendly error messages

Strapi Integration

  • CRUD Operations - Full Create, Read, Update, Delete functionality
  • Real-time Sync - Immediate updates between frontend and backend
  • Type Safety - TypeScript interfaces matching Strapi content types
  • Composables Demo - Interactive examples in /demo page

πŸ”§ Configuration

Strapi Backend Setup

Ensure your Strapi backend has a Todo content type with these fields:

  • title (Text) - Required
  • description (Text) - Optional
  • completed (Boolean) - Default: false

Environment Variables

The application connects to Strapi at http://localhost:1337 by default. You can modify this in nuxt.config.ts:

runtimeConfig: {
  strapi: {
    url: 'http://localhost:1337'
  },
  public: {
    strapi: {
      url: 'http://localhost:1337'
    }
  }
}

πŸ“š Learning Resources

πŸš€ Available Scripts

# Development
pnpm dev          # Start development server

# Production
pnpm build        # Build for production
pnpm preview      # Preview production build
pnpm generate     # Generate static site

# Maintenance
pnpm lint:typescript  # Type checking
pnpm deepclean       # Clean all dependencies and caches

🎨 UI Components

This project showcases modern UI components from Shadcn/ui:

  • Button - Various styles and states
  • Input - Form input with validation
  • Dialog - Modal dialogs for confirmations
  • Label - Accessible form labels

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License.

πŸ‘¨β€πŸ’» Author

Joebert Cerezo - @joebertcerezo


⭐ Star this repo if you found it helpful!