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.
Tools I Used
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.