A modern, feature-rich to-do application built with Astro and React. This project goes beyond a simple task list, incorporating features like user assignments, a tagging system, a dashboard summary, and local storage persistence.
- Task Management: Add, delete, and toggle the completion status of tasks.
- Dashboard Summary: Get a quick overview of task status (total, active, completed), top tags, and active tasks per user.
- Dynamic Filtering: Filter the task list by status (All, Active, Completed), by tag, or by assigned user.
- Tagging System:
- Assign multiple tags to tasks.
- Interactive tag input with autocomplete suggestions.
- Add new tags on the fly.
- User Assignment: Assign tasks to one or more users from a predefined list.
- Responsive Design: A two-column layout on desktop that stacks vertically for a seamless experience on mobile devices.
- Persistent State: Your tasks are automatically saved to your browser's
localStorageand reloaded on your next visit. - Secure Input: User-provided text is sanitized using DOMPurify to prevent Cross-Site Scripting (XSS) attacks.
- Framework: Astro - For building fast, content-focused websites.
- UI Library: React - For creating interactive UI components.
- Styling: SCSS/Sass - For structured and maintainable CSS.
- Security: DOMPurify - For XSS sanitization.
- AI-Assisted Development: The core Astro and React logic for this project was developed with significant assistance from AI programming assistants, including GitHub Copilot and Google's Gemini.
- CSS Framework: The styling is based on a personal CSS framework currently in development by the author.
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
-
Clone the repository:
git clone https://github.com/andriezzo/simpletodoapp.git cd simpletodoapp -
Install dependencies:
npm install
-
Configure Environment Variables: Create a new file named
.envin the root of the project and add your production domain. This is required for the production build to generate correct absolute URLs for meta tags.# .env PUBLIC_SITE_URL="https://tools.androe.com" -
Run the development server:
npm run dev
The application will be available at
http://localhost:4321.
This project is configured to be deployed to a subdirectory. If you need to change it, you must update the following two files before building:
-
astro.config.mjs: Set thebaseproperty to your subdirectory name.// astro.config.mjs export default defineConfig({ base: '/simpletodoapp', // Set this to your subdirectory name // ... });
-
.env: Ensure thePUBLIC_SITE_URLis set to your root domain.# .env PUBLIC_SITE_URL="https://tools.androe.com"
After configuring these files, run npm run build to generate the production files in the dist/ directory.
To create a production-ready version of your app, run the following command:
npm run buildThis will generate a static version of your site in the dist/ directory. These are the files you can deploy to any static hosting service.
public/: Contains static assets like images that are not processed by the build pipeline.src/components/: Reusable React components (TodoApp,UserList,TodoItem, etc.).src/layouts/: Astro layout components.src/pages/: Astro pages, which define the routes of the application.src/scss/: Global styles, variables, and component-specific SCSS files.astro.config.mjs: The main configuration file for the Astro project.
This project is licensed under the terms of the license specified in the LICENSE.txt file.