We may earn an affiliate commission when you visit our partners.
Habibi Coding

Unlock the power of Kotlin and Spring Boot to build robust, scalable backend systems with an API-first approach. In this comprehensive course, you will learn how to design, develop, and secure a RESTful API tailored for grocery shopping applications.

Starting with the foundational concepts, you’ll dive deep into API design using YAML files, where you’ll define your endpoints and Data Transfer Objects (DTOs) before writing any backend code. This approach ensures a clear, well-documented API that is consistent, easy to maintain, and ready for integration from the get-go.

What You'll Learn:

Read more

Unlock the power of Kotlin and Spring Boot to build robust, scalable backend systems with an API-first approach. In this comprehensive course, you will learn how to design, develop, and secure a RESTful API tailored for grocery shopping applications.

Starting with the foundational concepts, you’ll dive deep into API design using YAML files, where you’ll define your endpoints and Data Transfer Objects (DTOs) before writing any backend code. This approach ensures a clear, well-documented API that is consistent, easy to maintain, and ready for integration from the get-go.

What You'll Learn:

  • API-Design-First: Master the principles of API design first development by defining your endpoints and DTOs in YAML. Learn how this approach can streamline your development process and improve collaboration with frontend teams.

  • Kotlin with Spring Boot: Harness the full potential of Kotlin, a modern programming language, alongside Spring Boot, a powerful framework, to develop your backend logic. We’ll cover everything from setting up your project to implementing business logic.

  • Building RESTful APIs: Create a feature-rich RESTful API for a grocery shopping application. You’ll build endpoints for product browsing, shopping cart management, order processing, and more.

  • User Authentication and Authorization: Implement robust security features using Spring Security and JWT (JSON Web Tokens). Learn how to handle user sign-up, sign-in, and role-based access control to protect your API.

  • Database Integration: Connect your API to a database and manage data persistence effectively. You’ll work with Kotlin data classes, JPA (Java Persistence API), and Hibernate to interact with your data layer.

  • Testing and Validation: Ensure your API is reliable and bug-free by writing comprehensive unit and integration tests. Validate inputs and handle errors gracefully to provide a seamless user experience.

  • Deployment and Best Practices: Deploy your Spring Boot application to production environments, and learn best practices for maintaining and scaling your API.

Who Should Enroll:

  • Aspiring Backend Developers: If you want to specialize in backend development, this course will give you the essential skills and knowledge to build production-ready APIs using Kotlin and Spring Boot.

  • Experienced Developers: For those already familiar with backend development, this course offers an in-depth look at API-first design and security best practices, enhancing your current skill set.

  • Full-Stack Developers: If you work on both frontend and backend, this course will help you streamline the backend side of your projects, making integration with frontend components smoother and more efficient.

Why This Course?

  • Hands-On Learning: Gain practical experience by building a fully functional grocery shopping API from start to finish.

  • Expert Instruction: Learn from an experienced backend developer with a deep understanding of Kotlin and Spring Boot.

  • Real-World Application: The course is designed with real-world scenarios in mind, ensuring you gain skills that are directly applicable in the job market.

By the end of this course, you'll have the confidence to design, develop, and secure RESTful APIs with an API-first approach, using Kotlin and Spring Boot. Whether you're building your own projects or contributing to large-scale applications, this course will equip you with the tools you need to succeed.

Enroll today and start your journey to becoming a proficient backend developer.

Enroll now

What's inside

Learning objectives

  • Learn how to quickly design the database schema by using online tools
  • Learn how to set up a local dev environment with a postgres docker container and connect it with your ide
  • Learn how to create an api first design backend
  • Learn in a practical way spring security by authorisation and authentication with user sign up via an smtp service
  • Learn how to implement an restful grocery shopping api
  • Learn how to properly write unit & integration tests for your backend
  • Learn how to generate collections by using an yaml file and test your endpoints manually with postman

Syllabus

Introduction

Getting an understanding what the entire course is about

Learn how to create a database schema
Start with the database schema
Read more
Finish the database schema
set up Docker Container and connect a Postgres DB to an IDE

All the terminal commands:


docker network create postgres_db


mkdir db-data


cd db-data


docker run --name postgres_db -p 5432:5432 --network=postgres_db -v "$PWD:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=postgres -d postgres:alpine


docker ps


ls -la


docker run -it --rm --network=postgres_db postgres:alpine psql -h postgres_db -U postgres


\l


CREATE DATABASE groceries;

Create the groceries database
Learn how to set up a Kotlin Spring Boot project with Gradle and connect to local database
Set up your IDE & connect to Postgres
Commit for .gitignore and rest of project
Dependencies in build.gradle.kts Part 1
Dependencies in build.gradle.kts Part 2
Start to set up the application.yml file
Finish set up of application.yml file
Creating a local .env file
Explanation of the Spring Logs
First interaction with the open-api.yml file
Explaining the branches of the project
Implementing an package for exception and error cases
The API error class
Start to implement GlobalExceptionHandler
Implement all custom exception classes
Start to group the exception classes
Finish error package
Implement a package where all the user necessary logic is implemented
Start to implement user entity
Inherit from UserDetails interface
Set one to one relationship to verification token
Set one to many relationship to shopping list
Create the user repository
Create an interface for the user service
Design your first endpoint in YAML
Design your first data transfer object in YAML
Design other PATCH endpoints in YAML for user resource
Finish designing all endpoints and DTOs for user resource
Generate code for user resource and DTOs
Create a mapper for an entity to DTO
Start implementation of user service
Implement the authentication config class
Define an interface for signed-in user session
Implement change password logic for user
Finish implementation of user service
Implement user controller
Generate enum classes
Start to set up the integration tests for user repository
First integration tests for finding user by email
Finish the integration tests for user repository
User mapper unit test
Start with adding fields for user service unit tests
Unit test for change user email
Unit test for trigger invalid email format exception
More unit tests for bad request exception regarding email
Unit test for change user password
Triggering password mismatch exception tests
Finish unit tests for user service
Know how to implement logic regarding authorisation and authentication
Create the repository for verification token
Implement client session service
Generate JWT secret key
Implement logic for generating JWT keys
Extract username from JWT token
Finish implementing JWT service
Setup SMTP service with Brevo
Start implementing email service
Implement logic for send emails
Finish implementation of email service
Start to define auth endpoints
Define first DTOs for auth endpoints
Define verify user and sign-in endpoints
Finish defining auth endpoints
Create mapper for register request to user entity
Start implementing account management service
Implement user sign-up
Implement verify user
Implement sign-in user
Implement reset user password
Start implementing the filter for JWT
Implement first request filter
The auth controller
Start implementing the security config for the API
Finish implementing security config for API
Fix JWT filter bug
Start testing endpoints with Postman
Test remaining endpoints in Postman
Integration test for verification token repo
Unit test for sign-up mapper
Unit tests for JWT key creation
Preparing to write unit tests for account management service
Unit test for successful user sign-up
Unit tests for sign-up exceptions
Unit test verify user for success case
Unit test verify user exception cases
Unit test verify for expired verification token
Unit test sign-in for authentication response
Unit test sign-in exceptions cases
Unit tests for reset password
Set up client session service test class
Unit tests for client sessions methods for the success cases

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Uses Kotlin with Spring Boot, which are in demand for building scalable backend systems, making it highly relevant for backend developers
Emphasizes API-first design using YAML, which streamlines development and improves collaboration with frontend teams, a valuable skill for full-stack developers
Covers user authentication and authorization using Spring Security and JWT, which are essential for securing modern APIs and protecting user data
Includes hands-on experience building a RESTful API for a grocery shopping application, providing practical skills applicable to real-world projects
Requires setting up a local development environment with a Postgres Docker container, which may require some familiarity with Docker and database management
Teaches database integration using JPA and Hibernate, which are standard tools, but may require learners to have access to additional software and libraries

Save this course

Save Kotlin Spring Boot API Design First with Spring Security to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Kotlin Spring Boot API Design First with Spring Security with these activities:
Review Spring Security Concepts
Solidify your understanding of Spring Security concepts before diving into the course. Refreshing your knowledge will make it easier to grasp the implementation details and security configurations.
Browse courses on Spring Security
Show steps
  • Read the Spring Security documentation.
  • Review common authentication mechanisms.
  • Understand the role of JWTs in authentication.
Read 'Kotlin in Action'
Enhance your Kotlin skills by reading 'Kotlin in Action'. This book provides a comprehensive introduction to the language and will help you write more efficient and idiomatic code.
Show steps
  • Read the chapters on Kotlin syntax and features.
  • Study the examples on using Kotlin with Java libraries.
  • Practice writing Kotlin code to solve common programming problems.
Read 'Spring Security in Action'
Deepen your understanding of Spring Security by reading 'Spring Security in Action'. This book provides practical examples and real-world scenarios that will enhance your ability to secure RESTful APIs.
Show steps
  • Read the chapters related to authentication and authorization.
  • Study the examples on securing RESTful APIs.
  • Experiment with the code samples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple Authentication API
Practice building a simple authentication API using Kotlin, Spring Boot, and Spring Security. This hands-on project will reinforce your understanding of the concepts covered in the course.
Show steps
  • Set up a new Spring Boot project with Kotlin.
  • Implement user registration and login endpoints.
  • Secure the API using Spring Security and JWT.
  • Write unit tests for the authentication logic.
Write a Blog Post on API-First Design
Solidify your understanding of API-first design by writing a blog post explaining the benefits and best practices. This will help you articulate the concepts and reinforce your learning.
Show steps
  • Research the principles of API-first design.
  • Outline the key benefits of this approach.
  • Provide examples of successful API-first projects.
  • Publish the blog post on a platform like Medium or Dev.to.
Implement Different Authentication Flows
Practice implementing different authentication flows, such as OAuth2 and social login, to deepen your understanding of Spring Security. This will expose you to various security configurations and best practices.
Show steps
  • Set up OAuth2 authentication with a provider like Google or Facebook.
  • Implement social login using Spring Social.
  • Configure role-based access control for different user roles.
Contribute to a Spring Boot Project
Contribute to an open-source Spring Boot project to gain real-world experience and learn from other developers. This will expose you to best practices and help you improve your coding skills.
Show steps
  • Find an open-source Spring Boot project on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
  • Participate in code reviews and discussions.

Career center

Learners who complete Kotlin Spring Boot API Design First with Spring Security will develop knowledge and skills that may be useful to these careers:
Backend Developer
A backend developer is responsible for building and maintaining the server-side logic of applications. This course helps a backend developer by providing hands-on experience in designing and building RESTful APIs using Kotlin and Spring Boot. The course emphasizes API-first development which is especially important for backend developers. You can learn to implement user authentication and authorization using Spring Security and JWT. By the end, you will gain practical skills in database integration and testing, becoming proficient in building scalable backend systems.
API Developer
An API developer specializes in creating and managing application programming interfaces, allowing different software systems to communicate. This course is excellent for an API developer wanting to master API-first design, focusing on defining endpoints and Data Transfer Objects in YAML. You will learn to develop RESTful APIs with Spring Boot and Kotlin, connect to databases, and implement robust security features with Spring Security. The emphasis on testing and validation ensures you create reliable and maintainable APIs and develop a solid foundation for creating and maintaining APIs.
Software Engineer
A software engineer designs, develops, and tests software applications, often working on complex systems. This course provides important skills for a software engineer by teaching how to build robust backend systems using Kotlin and Spring Boot, emphasizing the importance of API design and security using Spring Security. The course teaches you how to build and maintain RESTful APIs, connect databases, and implement testing for reliable software. The API-first approach taught in this course also ensures efficient collaboration with frontend teams.
Application Developer
An application developer creates computer applications and programs, often working on specific software projects. This course provides hands-on experience in building a full-featured grocery shopping backend application. This is directly relevant for an application developer. You will learn how to use Kotlin and Spring Boot to create RESTful APIs, manage data persistence, and implement user authentication. The course teaches you how to use an API first design, and you will learn testing and validation techniques, helping you build high-quality, maintainable applications.
Full-Stack Developer
A full stack developer works across both front-end and back-end development. This course is particularly useful for a full stack developer because it focuses on the backend, teaching how to design, develop, and secure RESTful APIs using Kotlin and Spring Boot. It will help you streamline the backend side of your projects, making integration with frontend components smoother. You will also gain practical experience in user authentication, database management, and testing. The course helps you master backend development, making you a more proficient full stack developer.
Solutions Architect
A solutions architect is responsible for designing and overseeing the implementation of software solutions that meet business needs. This course may be useful for a solutions architect, as it provides a concrete example of a backend system. It teaches an api first approach. You will learn to design and build RESTful APIs, and implement security, all of which are relevant to system design. You will also learn to integrate databases and implement tests which helps ensure a high-quality system.
Java Developer
A Java developer is responsible for developing applications using Java. Though this course focuses on Kotlin, it still uses the Java framework Spring Boot. This means that the skills in this course can still be beneficial for a Java developer, especially in the backend. This course teaches API design using YAML, builds RESTful API using Spring Boot, and focuses on working with databases. If you are an experienced Java developer, this course might enhance your current skill set.
Technical Lead
A technical lead manages development teams and guides technical aspects of software projects. This course may help a technical lead by providing insight into modern backend development practices with Kotlin and Spring Boot. The course’s API-first design approach helps build a well documented and maintainable system. You will learn about implementation of RESTful APIs and user authentication. The practical skills of database integration and testing may be useful in your guidance of team members and projects.
Database Administrator
A database administrator is responsible for the maintenance and operation of databases. This course may help a database administrator because it covers database interaction using JPA and Hibernate. You will learn how to connect your API to a database and manage data persistence. The course also involves working with a Postgres Docker container for local database management and testing. While not directly focused on database administration, the experience of connecting to a database may be useful to you.
System Administrator
A systems administrator manages and maintains computer systems and servers. This course may be useful for a system administrator because it covers deployment of the Spring Boot application. You will also learn about docker containers, and setting up a local development environment with a Postgres database. While not directly focused on system administration, the course’s production environment knowledge may be valuable to you.
IT Project Manager
An IT project manager oversees technical projects from beginning to end, ensuring they remain on track. This course may be helpful for an IT project manager by giving insight into the technical aspects of backend development. You will learn about API first design, and developing secure, RESTful APIs with Spring Boot. This practical experience will provide an understanding of the challenges faced by developers, which may help you in your role as a project manager.
DevOps Engineer
A DevOps Engineer works to streamline the software development process through automation and collaboration between development and operations teams. This course may be useful for a DevOps engineer because it covers building backend systems using Kotlin and Spring Boot. The course teaches how to deploy Spring Boot applications to production environments. The course also includes working with Docker containers, which are fundamental to DevOps. The focus on reliable testing will also help with the DevOps aim of continuous integration and deployment.
Quality Assurance Engineer
A quality assurance engineer ensures that software meets quality standards through testing and validation. This course includes comprehensive unit and integration tests, teaching you to validate inputs and handle errors. This is relevant to the work a quality assurance engineer does on a daily basis. You will learn to build a reliable API, which is helpful in ensuring the quality of the overall system.
Technical Writer
A technical writer creates documentation for software and technical products. This course may be helpful for a technical writer, as it covers API design using YAML and building RESTful APIs with Spring Boot. This course emphasizes documenting the design of an API, making it easy to maintain and integrate. The technical knowledge in this course may help you in writing documentation for similar systems.
Web Developer
A web developer builds websites and web applications. This course may be useful for a web developer as it teaches the creation of a RESTful API that is designed for web applications. While the course does not directly cover front end development, it does focus on building a robust API that would be needed for web front ends. You will learn about the API first approach, implementing user authentication, and database integration, all of which may be useful in your day to day work.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Kotlin Spring Boot API Design First with Spring Security.
Provides a comprehensive guide to Spring Security, covering authentication, authorization, and common security vulnerabilities. It offers practical examples and real-world scenarios that align well with the course's focus on securing RESTful APIs. It is particularly useful for understanding the underlying principles and best practices for implementing security in Spring Boot applications. This book valuable reference for both beginners and experienced developers.
Provides a comprehensive introduction to Kotlin, covering its syntax, features, and best practices. While the course focuses on using Kotlin with Spring Boot, having a solid understanding of the language itself is crucial. This book is particularly helpful for those who are new to Kotlin or want to deepen their knowledge of the language. It serves as a valuable reference for understanding the Kotlin code used in the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser