Kross post - Final Showdown

Writing code, breaking things, then pretending it was a feature. ๐คก | Senior Software Engineer | Dreaming of Big Tech, a GDE badge, and a Koenigsegg. ๐
In this post , I will be sharing the tech stack , the process and challenges I faced during the development
Note: Here is the link to my introduction post about the application
Tech Stack :
- Next.js
- Hasura
- Vercel
- React Dropzone
- Tailwind css
- Eslint and Prettier
- Auth0
- Cloudinary
Process :
First Step was to choose the authentication provider. There was these following auth providers which played well i.,e straightforward and easy configuration with Hasura
- Auth0
- Nextauth
- Magic
- Firebase
I picked Auth0 because there free plan was providing 7000 users and configuration was easier. I made use of the rules section of Auth0 to insert the data to a user table whenever the user register for application.
Barrier one was complete.
Next step was integrating Apollo Client with Next.js which was actually little bit pain. This closed issue from Next-auth0 sdk was helpful in setting up the HOC. In order to make the request from the client secure I had to proxy all my api request to api/graphql endpoint
That was another level down.

Next step was setting up the Settings form , to get the API key's of the user.
For this step I made use of the Tailwind forms plugin and @apollo/client hooks useQuery and useMutation to create and fetch the queries from hasura's postgres database.
Now to the big step, Creation and preview of post

Here I made use of Monaco Editor and React Markdown to allow the users to create markdown content and preview them.

For adding cover images , I made use of React dropzone and cloudinary to drag and drop and upload to cloudinary to get the image url.
Finally when the user publishes the post , they will get redirected to the Dashboard where they can view the past posts with dates.
Note: The post will be first published to dev.to and then the published url will be used as a canonical url to repost the articles in hashnode and medium. In the next phase of the application , there will be option for users to use choose which blog can be their primary i,.e article will be posted to the blog first and then published url will be taken and used to repost across other platforms.
Thank you Hashnode and Hasura for the hackathon , learned a lot in the process.
Screenshot:

Demo:
Conclusion
Thank you for tuning in. Application will be under continuous development. Comments and Feedbacks are most welcome. More posts regarding the setup which I learned in the hackthon are on the way.
Links
Web Application : Kross-post
Source Code : https://github.com/skarthikeyan96/kross-post-typescript




