Chatter is a full-stack Next.js application designed for developers to share knowledge and insights with each other. I built the platform from the ground up, drawing design inspiration from various websites and social media platforms. The project leverages TypeScript for robust typing, Next.js for server-side rendering, Algolia for efficient search capabilities, and Firebase as the backend.
Building Chatter involved a lot of challenging features, but these are the core features that makes the app:
Like any project, I faced challenges, but the most notable one was implementing a multi-purpose content creation feature. I needed a single component that could handle three distinct actions: creating new content, editing existing content, and editing drafted content. The challenge was ensuring the component knew which action the user intended and displaying the appropriate buttons for each task.
I overcame this by leveraging props and setting up two types of routes: a standard route and a dynamic route. If the route request included a postId, the component would recognize that the user wanted to edit an existing post and show the relevant buttons for editing. Additionally, in the dynamic route, when a postId was provided, the parent page fetched the post’s status (published or draft) and passed it as a prop to the content creation component. This way, the component could tell if the user was editing a draft post and display the appropriate buttons.
On the other hand, if the route request didn’t include a postId, the component understood that the user was creating a new post, so it presented the corresponding buttons for that action.
This was my first full-stack application, and I learned a great deal, both technically and non-technically. One key takeaway was realizing my own resilience, this project challenged me in many ways, but I pushed through. On the technical side, I gained valuable experience working with technologies like Firebase and Redux, and I even implemented a custom pull-to-refresh feature using touch events, which I found really exciting.
Since this was a large-scale project, it also taught me the importance of code organization and managing the overall project flow. I’m grateful for the experience because by the end of the project, I had grown both in my technical skills and as a developer. It left me in a much better position than when I started.
Feel free to reach to me if you are looking for a developer or maybe you just want to connect.
ken.bassey9@gmail.com