AM Coder: Building a Todo List with ExpressJS, EJS, HTMX
In this tutorial, we will walk through the process of building a simple todo list application using ExpressJS, EJS, and HTMX. These tools will provide us with a powerful and flexible foundation for creating a dynamic web application that can handle data manipulation in real-time.
ExpressJS is a fast, unopinionated, minimalist web framework for Node.js that provides a set of robust features for building web and mobile applications. EJS is a simple templating language that lets you generate HTML markup with plain JavaScript, and HTMX is a library that allows you to manipulate HTML elements on the fly without having to write a lot of JavaScript code.
Let’s get started by setting up our development environment and installing the necessary dependencies. First, make sure you have Node.js and npm installed on your machine. Then, create a new directory for your project and navigate to it in your terminal or command prompt.
Next, initialize a new Node.js project by running the command:
“`
npm init -y
“`
This will create a `package.json` file in your project directory with the default settings. Now, we can install Express, EJS, and HTMX as dependencies for our project:
“`
npm install express ejs htmx
“`
Once the dependencies are installed, create a new file `app.js` in the root of your project directory. This will serve as the entry point for our application. In `app.js`, write the following code to set up the Express server and configure EJS as the template engine:
“`javascript
const express = require(‘express’);
const app = express();
const port = 3000;
app.set(‘view engine’, ‘ejs’);
app.use(express.static(‘public’));
app.get(‘/’, (req, res) => {
res.render(‘index’);
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
“`
In this code, we configure the Express server to use the EJS template engine and serve static files from a directory named `public`. We then define a route to render the `index.ejs` template when the root URL is accessed.
Now, create a new directory `views` in your project directory and add a file `index.ejs` inside it. This file will contain the HTML markup for our todo list application:
“`html
Todo List
document.getElementById(‘addTask’).addEventListener(‘htmx:afterRequest’, function(event) {
document.getElementById(‘task’).value = ”;
// Refresh the task list for real-time updates
document.getElementById(‘taskList’).htmx.refresh();
});
“`
In this HTML markup, we define a simple form for entering new tasks and a list for displaying existing tasks. We also include the HTMX library and a script that listens for a successful task addition and refreshes the task list to display the new task in real-time.
Finally, create a new directory `public` in your project directory and add a file `htmx.js` inside it. This file will contain the HTMX library code that enables real-time manipulation of HTML elements:
“`html
“`
With these files in place, you can start the Express server by running the command:
“`
node app.js
“`
Navigate to http://localhost:3000 in your web browser to see the todo list application in action. You can now add new tasks and see them appear in the list without having to refresh the page!
In this tutorial, we’ve explored the process of building a todo list application with ExpressJS, EJS, and HTMX. These tools provide a solid foundation for creating dynamic web applications that can handle real-time data manipulation. You can further extend this project by adding features like task deletion, task editing, and user authentication to make the todo list more robust. Happy coding!
really like the walkthrough! thank you!
Great tutorial!! The ExpressJS, EJS and HTMX is a great stack to get projects up and running in no time.