This app demonstrates authentication token storage with Redis, a well-known Redis use case. The app stores auth tokens in Redis with automatic expiry (TTL) and includes a protected Todo CRUD API that requires a valid token to access.
Built with:
Copy and edit the .env file:
cp .env.example .envYour .env file should contain the connection string you copied from Redis Cloud.
Next, spin up docker containers:
bun dockerYou should have a server running on http://localhost:<port> where the port is set in your .env file (default is 8080).
POST /api/auth/register- Register with{ "username": "...", "password": "..." }POST /api/auth/login- Login and receive a tokenPOST /api/auth/logout- Logout (requiresAuthorization: Bearer <token>)POST /api/auth/refresh- Refresh token (requiresAuthorization: Bearer <token>)GET /api/auth/me- Get current user info (requiresAuthorization: Bearer <token>)
GET /api/todos- Gets all todosGET /api/todos/:id- Gets a todo by IDGET /api/todos/search?[name=<name>]&[status=<status>]- Search for todos by name and/or statusPOST /api/todos- Create a todo with{ "name": "Sample todo" }PATCH /api/todos/:id- Update todo by ID with{ "status": "todo|in progress|complete" }DELETE /api/todos/:id- Delete a todo by ID
There are some tests in the __tests__ folder that can be run with the following command:
bun testThese tests setup and teardown on their own. You can modify them if you want to leave data in Redis.
To run the development server outside of docker:
bun install
# then
bun devFormatting code:
bun formatUpdating dependencies:
bun updateIf you don't yet have a database setup in Redis Cloud get started here for free.
To connect to a Redis Cloud database, log into the console and find the following:
- The
public endpoint(looks likeredis-#####.c###.us-east-1-#.ec2.redns.redis-cloud.com:#####) - Your
username(defaultis the default username, otherwise find the one you setup) - Your
password(either setup through Data Access Control, or available in theSecuritysection of the database page.
Combine the above values into a connection string and put it in your .env. It should
look something like the following:
REDIS_URL="redis://default:<password>@redis-#####.c###.us-west-2-#.ec2.redns.redis-cloud.com:#####"Run the tests to verify that you are connected properly.
To learn more about Redis, take a look at the following resources:
- Redis Documentation - learn about Redis products, features, and commands.
- Learn Redis - read tutorials, quick starts, and how-to guides for Redis.
- Redis Demo Center - watch short, technical videos about Redis products and features.