About this project
Overview
The project brings together several key elements of a modern full-stack application. The frontend provides a simple and intuitive interface for adding, editing, and viewing work experiences. The backend exposes secure RESTful APIs that handle all data operations.
Database
The database runs on Azure MySQL and stores all experience entries in a structured schema. Each record includes fields such as job title, company name, location, start and end dates, and a short description. Dates are stored using MySQL’s native DATE type to ensure consistent and timezone-safe handling. Through the connected API, users can safely create, update, or remove experiences, while data integrity and ordering are automatically managed on the backend.
The backend
The backend is deployed on Microsoft Azure and serves as the secure bridge between the frontend and the database. It uses Node.js, Express, and TypeScript, following RESTful design principles to perform Create, Read, Update, and Delete (CRUD) operations on JSON-formatted data. The backend enforces strict validation rules to prevent invalid input.
The frontend
The frontend application is hosted on Netlify. It consumes the API endpoints and renders the data in a clean, responsive interface built with HTML, CSS, and JavaScript. The design focuses on readability and simplicity, using clear layouts and accessible components.
Security
Security has been a core priority throughout the project. CORS is configured to allow requests only from trusted domains. All incoming data is validated before being stored, reducing the risk of injection or malformed content. In addition, the number of stored entries is limited with a database trigger to prevent unnecessary load or spam activity. Sensitive configuration values (such as database credentials) are kept in environment variables.
Sensitive information, such as database credentials, is stored in secure environment variables. The database itself uses a dedicated user account with limited permissions, following the principle of least privilege.
My reflections
Some work has already been done to improve accessibility, responsive layout, and input validation. However, there is still much to explore, especially in creating more dynamic features and refining the user experience for different devices.
My studies
Through this course, I have developed a strong foundation in programming principles and gained hands-on experience in both frontend and backend development. It has also encouraged an analytical way of thinking, solving problems by breaking them down into clear, logical steps.
About me as a developer
I am especially interested in full-stack development and enjoy connecting APIs with responsive, well-designed interfaces. I see every project as a chance to learn, refine my workflow, and find the balance between creativity and reliability.