Twine
May 19, 2023
Introduction
In this blog post, I will share my experience in creating Twine, from concept to completion, using TypeScript, React, Java, Spring Boot, Flyway, PostgreSQL, and AWS.
Conceptualizing Twine
The idea behind Twine was to provide a platform that fosters healthy collaboration between authors and illustrators, enabling them to share ideas, communicate easily, and monitor each other's work. In addition, the platform should facilitate fair profit sharing and ensure that both parties have equal rights to their work.
With this concept in mind, we began researching various technologies and platforms that would be suitable for creating such an application. Ultimately, we decided to create a full-stack web application using TypeScript and React for front-end development, and Java, Spring Boot, and PostgreSQL for back-end development.
Building the Front End
One step in creating Twine was developing the user interface using React and TypeScript. We wanted to ensure that the application was visually appealing and easy to navigate, so I spent a considerable amount of time designing and implementing the following key features:
1. User Profiles: I designed custom user profiles for authors and illustrators, displaying their portfolio and essential information such as their location, preferences, and availability.
2. Comments, Likes, and Search: To facilitate communication and promote user engagement, I added a comment section, a "like" system, and a search feature that allows users to discover other authors and illustrators on the platform.
Back End and REST API Development
While building the front end, I simultaneously began working on the application's back end. Using Java, Spring Boot, and PostgreSQL, I developed a REST API to allow users to interact with the database, thus making the application dynamic and responsive. Flyway was also employed to handle database migrations and ensure that the PostgreSQL database schema was up-to-date.
For added security, I implemented user authentication and authorization mechanisms to prevent unauthorized access to user data.
Deploying Twine on AWS
After completing the development process, we needed a reliable and scalable platform to host the application. Amazon Web Services (AWS) fit the bill perfectly, offering robust infrastructure and services to deploy, monitor, and scale the application as required. We utilized AWS services such as EC2, RDS, and Amplify to deploy the full-stack web application seamlessly.