Projects · Backend

Bookmarks API

Tech stack:
nestjs
typescript
jest
prisma
passport
Developming time:

One week

GitHub repo:

Link

Project preview:

Link

Introduction

The Bookmarks API is the NestJS REST API project Demonstration is an advanced backend project tailored to demonstrate the robustness of NestJS combined with modern tools like Prisma, Docker, and more. The primary purpose of this API server is to manage user authentication and bookmarks, employing state-of-the-art security and containerization techniques. With NestJS at its core, the application efficiently handles user requests and operations related to authentication and bookmarks management.

Features

User Authentication: Integrated user authentication through JWT and Argon2 for password hashing. Endpoints include user registration (/auth/signup), sign in (/auth/signin), and fetching the current user's information (/users/me). User Profile Management: Allows users to view and update their profile information using the /users endpoint. Bookmarks Management: Facilitates CRUD operations on bookmarks. Users can view all bookmarks (/bookmarks), retrieve, update, or delete a specific bookmark by its ID (/bookmarks/:id). End-to-End Testing: Comprehensive E2E tests ensure application robustness and reliability. Written using Jest and Pactum for testing integrity. Containerization: With Docker and Docker Compose, this application ensures consistency across environments and easy scalability.

User Interface

As this is a backend project, there isn't a graphical user interface. However, developers can interact with the REST API using tools like Postman or any HTTP client. The provided endpoints cater to authentication, user profile management, and bookmarks CRUD operations.






Code Architecture

Leveraging NestJS, the codebase adopts a modular design pattern, encompassing controllers, modules, services, DTOs, guards, strategies, and decorators. Passport.js assists in user authentication while JWT tokens ensure secure data transfer. Prisma facilitates seamless integration with a PostgreSQL database. For user password protection, Argon2 ensures top-tier encryption. Jest, combined with Pactum, offers a comprehensive testing suite. All components, whether development or testing, benefit from Docker's containerization.

Technologies Used

Backend: NestJS: Progressive Node.js framework for efficient server-side applications. Prisma: Open-source database toolkit. Pactum: Versatile API testing tool. TypeScript (TS): Typed superset of JavaScript. Jest: Delightful JavaScript testing framework. Argon2: Password hashing library. Docker & Docker Compose: For containerization and multi-container application definition.

Challenges and Solutions

Developing a backend with such a diverse technology stack can present integration challenges. Ensuring compatibility between NestJS, Prisma, JWT, and Docker required meticulous planning and execution. By leveraging the comprehensive documentation and active community support for each tool, integration challenges were successfully overcome.

Conclusion

The The Bookmarks API is NestJS REST API Demonstration project is a testament to the capabilities of modern backend development. Using NestJS in conjunction with Docker, Prisma, JWT, and other tools, it stands as a beacon for scalable, maintainable, and efficient backend systems. Whether it's managing user data, handling bookmarks, or ensuring the application's resilience through E2E tests, this project encapsulates the essence of a well-rounded backend API server.
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen
screen

Available for work

·

Excited to bring my skills and experience to your team

·

Available for collaboration

·

Seeking new challenges

·

Available for cooperation

·

Interested in working with startups

·

Available for short-term or long-term projects

·

Available for work

·

Excited to bring my skills and experience to your team

·

Available for collaboration

·

Seeking new challenges

·

Available for cooperation

·

Interested in working with startups

·

Available for short-term or long-term projects

·

© 2020 - 2025 Brandon Nolan. All Rights Reserved.

+1 (437) 439-3888

Canada | Global