← Back to Projects

A REST API that powers an animal adoption website. Built with Node.js, Express, MySQL, and JWT authentication.

Members can browse animals and adopt them. Admins can add new animals, manage users, and see who adopted what. The whole thing runs on Railway.

Pawfinder
Adoption API

Key Features

🔐

Secure Login with JWT

The server gives you a signed token when you log in. Your browser sends it back with every request to prove who you are. Passwords are hashed with bcrypt — never stored as text.

👥

Two Roles: Admin & Member

Admins can add or delete animals and see all users. Members can adopt animals and view their own adoptions. The API checks your role before every action.

🐾

Full Animal Profiles

Every animal has a name, species, size, age, image, location, description, and personality tags. All connected through a relational MySQL database.

📞

Contact Adopters

When someone adopts an animal, admins can see their contact info — email and phone. One click opens an email or phone call so they can reach out.

What the App Looks Like

The frontend is a separate project — plain HTML, CSS, and JavaScript that calls this API. Here's a peek at what users see.

Animal Card
Coco Available
Dwarf Hamster · small · 4 yr old
calm scared
A sweet little hamster who loves running on her wheel.
Profile Card
U
User
member
Emailuser@example.com
Phone+47 123 45 678
AddressOslo, Norway
Admin: User List
U
U2
A
Admin: Dashboard
13
Animals
10
Species
3
Adoptions

Tools I Used

Node.js Express Sequelize MySQL JWT bcrypt Aiven Railway

Node.js & Express

The server runtime and the small library that handles incoming requests.

Sequelize + MySQL

Talks to the database in JavaScript. Handles tables, joins, and relationships.

JWT

A signed token the server issues at login. Browsers send it back to prove who they are.

bcrypt

Scrambles passwords before saving. If the database leaks, real passwords are safe.

Railway

Hosts the API on the internet with a public URL.

CORS

Lets the frontend (on Netlify) and backend (on Railway) safely talk to each other.

Let's connect!

Thank you for reviewing the Pawfinder project. I'd love to discuss it further or explore new opportunities.