<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adithya</title>
    <description>The latest articles on DEV Community by Adithya (@shenali_chath_a97b8d9).</description>
    <link>https://dev.to/shenali_chath_a97b8d9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4060178%2F710d317b-8564-423f-86d4-11d47d2c8a78.jpg</url>
      <title>DEV Community: Adithya</title>
      <link>https://dev.to/shenali_chath_a97b8d9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shenali_chath_a97b8d9"/>
    <language>en</language>
    <item>
      <title>Building a Secure Employee Management System Using Ballerina, PostgreSQL, Docker, and React</title>
      <dc:creator>Adithya</dc:creator>
      <pubDate>Mon, 03 Aug 2026 10:01:17 +0000</pubDate>
      <link>https://dev.to/shenali_chath_a97b8d9/building-a-secure-employee-management-system-using-ballerina-postgresql-docker-and-react-1ako</link>
      <guid>https://dev.to/shenali_chath_a97b8d9/building-a-secure-employee-management-system-using-ballerina-postgresql-docker-and-react-1ako</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Building software is not only about writing code. It is about understanding how different technologies work together to solve real-world problems.&lt;/p&gt;

&lt;p&gt;As a Software Engineering student, I wanted to create a project that goes beyond a basic CRUD application. My goal was to build an enterprise-style system with proper backend architecture, database integration, security, and deployment practices.&lt;/p&gt;

&lt;p&gt;For this reason, I developed an &lt;strong&gt;Employee Management System&lt;/strong&gt; using &lt;strong&gt;Ballerina&lt;/strong&gt; as the backend technology, together with &lt;strong&gt;React, PostgreSQL, and Docker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This project helped me explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST API development&lt;/li&gt;
&lt;li&gt;Database integration&lt;/li&gt;
&lt;li&gt;User authentication&lt;/li&gt;
&lt;li&gt;Role-based authorization&lt;/li&gt;
&lt;li&gt;Containerized deployment&lt;/li&gt;
&lt;li&gt;Modern integration concepts using Ballerina&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;The Employee Management System is a web-based application designed to manage employee information securely.&lt;/p&gt;

&lt;p&gt;The system supports two types of users:&lt;/p&gt;

&lt;h3&gt;
  
  
  Administrator
&lt;/h3&gt;

&lt;p&gt;Administrators can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Register users&lt;/li&gt;
&lt;li&gt;Add employees&lt;/li&gt;
&lt;li&gt;Update employee details&lt;/li&gt;
&lt;li&gt;Delete employees&lt;/li&gt;
&lt;li&gt;View employee records&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Normal Users
&lt;/h3&gt;

&lt;p&gt;Normal users can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to the system&lt;/li&gt;
&lt;li&gt;View employee information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project was designed with a simple but practical enterprise architecture.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why I Selected Ballerina for Backend Development
&lt;/h1&gt;

&lt;p&gt;While exploring backend technologies, I wanted to learn a language that focuses not only on application logic but also on communication and integrations.&lt;/p&gt;

&lt;p&gt;Ballerina is a cloud-native programming language developed by WSO2 that is designed for building integration-focused applications.&lt;/p&gt;

&lt;p&gt;Some reasons I selected Ballerina:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple REST API development&lt;/li&gt;
&lt;li&gt;Built-in support for network communication&lt;/li&gt;
&lt;li&gt;Strong type system&lt;/li&gt;
&lt;li&gt;Clean service-oriented programming model&lt;/li&gt;
&lt;li&gt;Database connectivity support&lt;/li&gt;
&lt;li&gt;Suitable for enterprise integration scenarios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learning Ballerina gave me a different perspective on backend development because APIs and integrations are treated as important parts of the language itself.&lt;/p&gt;




&lt;h1&gt;
  
  
  System Architecture
&lt;/h1&gt;

&lt;p&gt;The application follows this architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                React Frontend
                      |
                      |
                      ↓
              Ballerina REST API
                      |
        -----------------------------
        |                           |
        ↓                           ↓
 PostgreSQL Database          Authentication
                                      |
                                      ↓
                                JWT Security
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend communicates with the Ballerina backend through REST APIs.&lt;/p&gt;

&lt;p&gt;The backend handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business logic&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;Database operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Add your architecture diagram screenshot here)&lt;/p&gt;




&lt;h1&gt;
  
  
  Developing REST APIs with Ballerina
&lt;/h1&gt;

&lt;p&gt;One of the most interesting parts of this project was developing REST APIs using Ballerina.&lt;/p&gt;

&lt;p&gt;Ballerina provides a clean way to define HTTP services.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service /api on new http:Listener(5000) {

    resource function get employees()
        returns Employee[]|error {

        return getEmployees();

    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach makes API development readable and easy to understand.&lt;/p&gt;

&lt;p&gt;The backend provides APIs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User registration&lt;/li&gt;
&lt;li&gt;User login&lt;/li&gt;
&lt;li&gt;Employee retrieval&lt;/li&gt;
&lt;li&gt;Employee creation&lt;/li&gt;
&lt;li&gt;Employee updating&lt;/li&gt;
&lt;li&gt;Employee deletion&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  PostgreSQL Database Integration
&lt;/h1&gt;

&lt;p&gt;The application uses PostgreSQL as the database management system.&lt;/p&gt;

&lt;p&gt;The main database tables are:&lt;/p&gt;

&lt;h2&gt;
  
  
  Users Table
&lt;/h2&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User ID&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password information&lt;/li&gt;
&lt;li&gt;User role&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Employees Table
&lt;/h2&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employee ID&lt;/li&gt;
&lt;li&gt;Employee name&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;Department information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ballerina's PostgreSQL connector was used to communicate between the application and the database.&lt;/p&gt;

&lt;p&gt;This helped me understand how Ballerina can integrate with external data sources in real applications.&lt;/p&gt;




&lt;h1&gt;
  
  
  Authentication and Role-Based Authorization
&lt;/h1&gt;

&lt;p&gt;Security was an important requirement of this project.&lt;/p&gt;

&lt;p&gt;Instead of implementing only a basic login system, I implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User registration&lt;/li&gt;
&lt;li&gt;Login authentication&lt;/li&gt;
&lt;li&gt;JWT-based authentication&lt;/li&gt;
&lt;li&gt;Role-based authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The authentication flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Login
      |
      ↓
Validate Credentials
      |
      ↓
Generate JWT Token
      |
      ↓
Access Protected APIs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system separates permissions based on user roles.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ADMIN

✓ Create Employee
✓ Update Employee
✓ Delete Employee
✓ View Employees


USER

✓ View Employees
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helped me understand how enterprise applications protect sensitive operations.&lt;/p&gt;

&lt;p&gt;(Add login API screenshot here)&lt;/p&gt;




&lt;h1&gt;
  
  
  Docker Containerization
&lt;/h1&gt;

&lt;p&gt;To make the application easier to run and maintain, I used Docker.&lt;/p&gt;

&lt;p&gt;The application runs with two main containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Employee API Container

        +

PostgreSQL Database Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker provided several benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistent development environment&lt;/li&gt;
&lt;li&gt;Easier setup process&lt;/li&gt;
&lt;li&gt;Better portability&lt;/li&gt;
&lt;li&gt;Simplified deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The complete application can be started using Docker Compose.&lt;/p&gt;

&lt;p&gt;(Add Docker screenshot here)&lt;/p&gt;




&lt;h1&gt;
  
  
  Exploring Ballerina MCP Capabilities
&lt;/h1&gt;

&lt;p&gt;As an additional learning activity, I explored Ballerina MCP capabilities.&lt;/p&gt;

&lt;p&gt;I created a small MCP server to understand how Ballerina can support modern communication patterns and integration scenarios.&lt;/p&gt;

&lt;p&gt;This exploration helped me understand that Ballerina can be used not only for traditional REST APIs but also for newer approaches where applications need to communicate with different tools and systems.&lt;/p&gt;




&lt;h1&gt;
  
  
  Challenges I Faced and Lessons Learned
&lt;/h1&gt;

&lt;p&gt;During this project, I faced several challenges that improved my software engineering skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning a New Programming Language
&lt;/h2&gt;

&lt;p&gt;Ballerina has its own approach to service development and integrations.&lt;/p&gt;

&lt;p&gt;Understanding its syntax and service-oriented model required learning a different way of thinking about backend development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing Security
&lt;/h2&gt;

&lt;p&gt;Adding authentication and authorization helped me understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure API design&lt;/li&gt;
&lt;li&gt;Token-based authentication&lt;/li&gt;
&lt;li&gt;Permission management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deployment Experience
&lt;/h2&gt;

&lt;p&gt;Using Docker helped me understand how applications can be packaged and run consistently across different environments.&lt;/p&gt;




&lt;h1&gt;
  
  
  Technologies Used
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Frontend
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React.js&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Backend
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ballerina&lt;/li&gt;
&lt;li&gt;REST APIs&lt;/li&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DevOps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Technology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ballerina MCP&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Project Highlights
&lt;/h1&gt;

&lt;p&gt;Through this project, I implemented:&lt;/p&gt;

&lt;p&gt;✅ Secure REST API backend&lt;br&gt;
✅ User registration and authentication&lt;br&gt;
✅ JWT token-based security&lt;br&gt;
✅ Role-based authorization&lt;br&gt;
✅ PostgreSQL database integration&lt;br&gt;
✅ Docker-based deployment&lt;br&gt;
✅ React frontend integration&lt;br&gt;
✅ Ballerina MCP exploration&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Building this Employee Management System was a valuable learning experience that improved my understanding of backend engineering and enterprise application development.&lt;/p&gt;

&lt;p&gt;Through this project, I learned how Ballerina can simplify API development and integration-focused application design.&lt;/p&gt;

&lt;p&gt;This project also helped me understand how modern applications combine frontend technologies, backend services, databases, security mechanisms, and deployment tools to create complete software solutions.&lt;/p&gt;

&lt;p&gt;I believe continuous learning and experimenting with new technologies are essential for becoming a better software engineer, and this project was an important step in my journey.&lt;/p&gt;




&lt;p&gt;Ballerina | React | PostgreSQL | Docker | JWT | MCP&lt;/p&gt;

</description>
      <category>ballerina</category>
      <category>backend</category>
      <category>docker</category>
      <category>postgres</category>
    </item>
  </channel>
</rss>
