jstack Website

As the final project of my internship at jstack, I took on the task of rebuilding part of the official jstack website using the Webkit and template system I had developed earlier. This project was not originally planned as part of the internship. However, because of the trust I had earned from the team, and the speed at which we had completed our previous work, we were given the opportunity to take it on during the final weeks. The assignment was clear from the start: keep the existing design exactly as it was, but rebuild the codebase using the new, modern stack and toolset. It was a chance to prove that the Webkit and template could be used even in the company’s most important live site.
Demo video (no commentary):
Goal
The goal of this project was to refactor the jstack website using our standardized and automated setup. We were not tasked with redesigning anything. The visuals and layout were to remain untouched. The purpose was to deliver a more maintainable, scalable, and consistent codebase that would be easier to expand and manage in the future.
Because the internship was almost over, we focused on completing the first three pages of the site. The remaining work would be picked up by the internal team after our departure.
Why This Project Mattered
Even though it was only partially implemented during our time, this project carried weight. The official website is one of the most visible parts of the company’s brand. The fact that we were trusted with it during our internship was a big compliment. It showed the confidence the team had in our skills, reliability, and the systems we had already delivered.
Setup and Workflow
I started the project by generating the new codebase using the jstack Webkit. This gave me a fully configured development environment within minutes, including Contentful setup, TypeScript, Tailwind CSS, and our full UI component set.
From there, I focused on implementing the three selected pages. Since we were not changing the design, the challenge was in replicating the existing layout precisely while using modern tools and structured content.
I connected each part of the layout to Contentful, ensuring that all text and images were editable by non-technical team members. Throughout the project, I worked closely with my mentor and teammate to ensure accuracy and consistency with the current live site.
Pages We Delivered
By the end of our internship, we successfully delivered the following pages:
Home Page
A fully responsive version of the homepage, matching the original design exactly. Connected to Contentful for dynamic content.
Services Page
A clear overview of jstack's core services, structured with reusable components and editable in the CMS.
Blog Overview
A listing of recent blog articles, automatically fetched from Contentful and styled to match the existing design.
Technical Approach
The website was built using Next.js for structure and routing, with Tailwind CSS for styling and ShadCN for accessible, clean UI components. Contentful was used as the CMS, and all logic was written in TypeScript for safety and maintainability.
The code followed a strict modular structure, separating UI components, content models, and configuration. Even though we reused the design, the new structure makes it much easier to scale and maintain.
What I Learned
How to work within the constraints of an existing design and replicate it with precision
How to apply my own tools in a live production environment
How to manage partial project scope and still deliver clean, usable results
The importance of trust, reliability, and clear communication in a team setting
How to structure CMS content to match an existing layout without redesign
This project was a great reminder that not every challenge lies in making something new. Sometimes, the real challenge is rebuilding something old in a smarter, more sustainable way.
Result
Although the full rebuild of the site was not completed during the internship, the first three pages were delivered and integrated successfully. The new foundation we set up will make it easier for the jstack team to continue development after our departure.
This was not a required part of the internship, but something we took on because we were ahead of schedule and confident in the tools we had built. Being trusted with a production site like this was a clear sign that our work had real value to the company.