Inkly banner

Inkly

103 devlogs
70h 29m 25s

A cool and very advanced whiteboard application built using next.js. Supports math, text, multi user collaboration and what not!

Demo Repository

Loading README...

coolcream

Shipped this project!

Hours: 10.19
Cookies: đŸȘ 137
Multiplier: 13.43 cookies/hr

This was awesome! I added a bunch of new features and fixed some ugly bugs!!:

  • Added custom color option
  • Added dark mode website
  • Fixed error when last organization is deleted
  • Added hotkeys
  • Added a bunch of new shapes!
  • Added a drag to draw feature
  • And way more ui improvements
  • Fixed small issues here and there!
coolcream

Made some minor ui changes in the selection tools now this is ready to be shipped!

Attachment
0
coolcream

I did a little more work but the local site started throwing so many errors so i had to sit and fix em one by one its still the same old site though

Attachment
0
coolcream

Did some backed improvements. Lil tough with the packages and liveblocks

Attachment
0
coolcream

Oof im tired of doin this every time i try to add a new feature some dumb technical bug pops up. This time its seems that there was some ‘syntax error in package.json’ but there was nothing. I even double checked it with a json linter but next was stubborn and did not run the site. I tried again and again and finally after remaking the package.json it worked poof. Its wasting my time instead of allowing me to make new things

Attachment
0
coolcream

This was simple but time taking I had to it and map all tools to keys on the keyboard and then write them all down in an array and make a dialog display for all of them I knew how to do this but it was just a time taking process.

Attachment
0
coolcream

Worked on some minor changes like colors and updated the canvas settings dialog to include the color theme as well

Attachment
0
coolcream

This was crazy. I found a crazy bug in the site that everytime i deleted an organization, it lead me to the home page and did not allow me to sign back in. It was really tough to figure out what was the problem i tried changing my proxy, middleware and others but they did not work. So i kept this aside for some time and just thought about the problem. And i actually found out the problem but not its cause i googled about clerk for a while and I found the 1 setting which had caused all of this ‘membership required’ this option was checked which caused the site to lead the user to choose organization page leading to so many errors

Attachment
0
coolcream

I retried making a dark mode and this time it actually worked I had to make some minor changes here and there to match the theme but the replacement of hardcoded colors was a huge headache. But it turned out well

Attachment
0
coolcream

Made some UX improvements:

  • Added more blur and rounded corners to all the bars
  • Fixed the all boards button on the info bar
  • Added a Text label to he role display
  • Changed the reset zoom button to show the zoom percentage
  • Fixed rounded corners for all buttons
Attachment
0
coolcream

So i decided to make yet another useful feature EXPORT AS PNG This was rlly tough I tried different ways but i only found 1 of the comfortable html-to-canvas this was also difficult because I accidentally linked the wrong item to export. SO here it is

Attachment
0
coolcream

I added an eraser feature. This was verryyyyy easy. I just had to se which layer the user was hovering over and delete that layer!

Attachment
0
coolcream

I fixed a small issue in the custom color picker. Nothing big, just small issues

Attachment
0
coolcream

Added more colors! :yay: And also created a custom color component for you to choose your own color. (this was from react colorful library

Attachment
0
coolcream

I created an awesome feature to zoom in, zoom out reset camera and see zoom % in a top bar. It also allows you to reset camera position if lost

Attachment
0
coolcream

So, this might have not been huge progress, but i definitely squashed * 2 HUGE BUGS *

  • The line not aligning with the mouse:
    – This was so hard. I first tried to fix the issue by recorrecting my point to canvas function that returns a specific point on the canvas. That did not work. So i looked into the main line component itself. I checked if there were any typos or mistakes in the positioning. It was all right. After all this i ran out of places to look for the issue. So i got tired and experimented with the streamlining and smoothing to try and get some cool effects and to my surprise, lowering them to 0 fixed the error what a coincidence. So i fixed the error by mistake 😁
  • Then comes the Selection tools appearing in a random place when I zoom in or out
    – This was not that hard. I just had to include the svg component’s coordinates in the math function i used to position the selection tools.
Attachment
0
coolcream

So i heavily cleaned up my code for bettr understanding

Attachment
0
coolcream

This was soooooooo tough. I thought adding 4 more shapes wouldnt be that hard but then i wound out its evil nature. I struggled to get the points and calculations right on my own so i had to google out things and second, i added a really nice feature of dragging to draw. That was fun and nice.

Attachment
0
coolcream

I spent some 20mins and reorganized the toolbar because it was becoming too cluttered. So i grouped all shapes into one, text, mat and those stuff as one and the pencil and line as one. This was simple

Attachment
0
coolcream

Created an awesome feature for the whiteboard. IT is really nice and im pretty sure you guys would like it.

Canvas Backgrounds :yay:

this was not too hard i had to change the default bg and map it to the button which tells the canvas its bg. For some of them i had to get images from random websites to get the back ground. It looks cool!

Attachment
0
coolcream

Shipped this project!

Hours: 4.97
Cookies: đŸȘ 110
Multiplier: 22.2 cookies/hr

I changes a lot of stuff, added some UI features here and there, tried to add multi page mode, but failed and so on, but i still fixed a lot of bugs!

coolcream

Programmed a lot of bug fixes and major issues. Made it nicer for people to use and I also changed some UI here and there so
. heres it!

Attachment
0
coolcream

I tried my best to add a themes to he site but it failed like crazy. First, i regret using hardcoded colors for the elements. That way, i cant change them when i tried to, they looked ugly, disgusting so i had to take it out here is how it looked. So i removed it

Attachment
0
coolcream

New Feature: Viewport modes!

What I did meanwhile


Soo I was trying to figure out how to add various canvas modes so that the user can draw on a single page or an infinite canvas. This was very hard. I tried various methods of doing that, for example, i tried clamping the camera and all that, but none of them worked. So i had to come up with my own intuitive method. What i did was, i added another type to the canvas types file and declared the 2 modes. Then I added some conditional checks if the mode is infinite and blah bah blah and finally it somehow worked. So here’s a preview

Attachment
Attachment
Attachment
0
coolcream

Shipped this project!

Hours: 8.23
Cookies: đŸȘ 152
Multiplier: 18.51 cookies/hr

Okay. This was a really huge version update:

  • Added a math input tool
  • Added some keyboard shortcuts for duplicate and multiple selection
  • Added user roles and permissions (Admin, Editor, Viewer)
  • Updated toolbar and board info UI
  • Fixed some unwanted bugs
coolcream

Bugfix:

  • Just found a small bug in the board. The editor was able to edit other people’s text and notes. So i had to add more guards to the respective components and got it.
Attachment
0
coolcream

Updates:

So i decided to spice things up a bit and do some cool stuff so i added organization roles. Let me give a brief description of each role.

Roles:

  • Admin: Special privileges. They can do everything. Create boards, draw on canvas, delete and edit other users drawings etc.
  • Editor: Slightly lesser privileges. Cannot create boards, but can draw on canvas. Cannot edit or delete other users drawings
  • Viewer: Seriously cannot do anything other than see the drawings and elements of other people.

How i did this:

Since i was using clerk for the authentication, it allowed to add user roles. I had to map the user roles to live blocks and disable abilities one by one for all the roles.

Commit

Attachment
Attachment
0
coolcream

Main changes:

  • I programmed 2 main things. First, i changed the pan to a middle mouse + drag and second, i added a zoom wit the scroll wheel.

Changelog

Attachment
4

Comments

sakshisuman25
sakshisuman25 about 2 months ago

awsome

coolcream
coolcream about 2 months ago

Thanks, still adding more cool features! Look out for them

korbinvanettedev
korbinvanettedev about 2 months ago

Would it be a good feature to add blocks, where you can click on a block to find it on the board?

coolcream
coolcream about 2 months ago

What do you mean by a block?

coolcream

Changes

  • I just found a bug in the system where when i was trying to draw a line over another line, it selected the line instead of drawing over it.
  • So i went over and added another guard to the line and pencil components and fixed it.

Commit

0
coolcream

What i did meanwhile
..

  • So i got a suggestion to make a separate tool for inserting math becuse some of the text was automatically replaced into math symbols.
  • Soo
. i went on and created a new tool for that.

Changelog

Attachment
0
coolcream

This was a lot of work:

  • I updated the main text component because there were many users complaining about it. Heres what i changed:
  • Made the textbox increase width while typing, and wrap to the next line after a fixed width. This is cool because earlier, you had to resize it urselves.
Attachment
0
coolcream

Shipped this project!

Hours: 4.01
Cookies: đŸȘ 89
Multiplier: 22.06 cookies/hr

I just added a bunch of new features:

  • Added the line tool
  • Added the triangle tool
  • Added a dotted canvas
  • Added a clear canvas button
  • Added a toggle fill for shapes
  • Added a lazy preview to the homepage for users who don’t want to login
  • Updated the home page with some effects
    Yay! This was a lot.
coolcream

Made some changes on the homepage and added a typewriter effect using a library. It was easy

Attachment
0
coolcream

Just did a lot of work. Firs i decided to make the lazy preview for people who wanted to see the preview without logging in, (i made the feature based on user requests), and i fixed some issues with the line tool and the pencil tool. Plus i kept on coming across an issue while drawing, it used to try to select and drag the user avatar, stopping the drawing. So i went over and fixed it. And i also added a dotted pattern to the board. Looks sleek.

Attachment
Attachment
0
coolcream

I just finished creating the line tool. This was hard. First i tried a prototype to render the line as a component but then it did not allow me to draw straight lines, only slant lines. So i changed the thing to add a change to the pencil component itself to allow drawing a straight line. And it works! I also added a clean canvas option!

Attachment
2

Comments

F1R3FLY_CL41R3
F1R3FLY_CL41R3 2 months ago

This is pretty sick! Though a piece of feedback I would give is using the tactic “lazy registration” for the site, so people can get a preview of the tools before having to give their information. Still, I love the whiteboard concept and this is super cool!

coolcream
coolcream 2 months ago

dude thanks for your feedback. I think tihs feature is really necessary beacise i have heard other say that too thanks again

coolcream

Created a stroke weight option to reduce the stroke size or decrease it in the selection tools. ow the shapes can be thick or thin.

Attachment
4

Comments

avighnakc
avighnakc about 2 months ago

How do you use this feature?

Can you make it work with the regular pen too?

coolcream
coolcream about 2 months ago

The pen is pressure sensitive

coolcream
coolcream about 2 months ago

You can change the stroke size of the shapes by selecting them

coolcream
coolcream about 2 months ago

You will see a stroke width selector

coolcream

Created a fill toggle. Now you can created outlined shapes too! This was an easy task.

Attachment
0
coolcream

This was awesome. I created a whole new tool for a triangle. It works well. And it loooks cool!!!

Attachment
0
coolcream

Shipped this project!

Hours: 43.09
Cookies: đŸȘ 1252
Multiplier: 29.05 cookies/hr

I made a collaborative whiteboard in Next JS! This was an awesome idea and a really nice way for me to learn next.js and tailwind CSS. This gave me an opportunity to lean a new thing rather than sticking to the old and basic html, CSS and JS. I loved this project, even though i used tutorials here and there, i actually liked the process and way of creating. I also appreciate the people giving me suggestions here and there. Thanks a lot to all of you!

coolcream

Updated some minor changes and added readme.

Attachment
0
coolcream

Okay. This was real saddening and crazy. So this morning, when i was trying to deploy the website, i had to shift all external components into production and in the process, i accidentally deleted the clear authentication project, and on top of that the action was irreversible and crazy. So I spent some time and remade the clerk app and finally now, it has been deployed!!!

Attachment
0
coolcream

Okay
 This was hard work I completely programmed the drawing functionality and meanwhile i also fixed many bugs which did not work as expected. Now they all are fine and you can draw things too! And yeah the thickness is pressure sensitive

Attachment
0
coolcream

Created the unauthenticated page, for people who are not logged in. I added some animations and also displayed the features.

0
coolcream

Created the sticky Note object. It all looks good! Almost done with all the stuff. Only things left to do are the pencil and a page for non-logged in users

Attachment
0
coolcream

Created the text component. Had to cycle through a good set of fonts and pick the best one. Also finished the part of able to be changing the font size and color.

0
coolcream

Created the ellipse object. I only had to add another case for the element, and some extra params.

Attachment
0
coolcream

I loved this! Now we can select multiple items somewhat like a selection net or you can say a rectangular selection tool. This was not that hard i did not have to write any new code for the selection part, only modified the way it works. But i also added tweaks in the existing code. I got many errors in this part.

0
coolcream

Created the bring to front and send to back actions. They work well now.

0
coolcream

This was some good progress. Now you can change the colors of your rectangle and even delete it! Its coming together just a few more things to wrap things up.

Attachment
0
coolcream

Created a small popup/toolbar appear whenever an object is selected. This will be used for changing the color or deleting the object.

Attachment
0
coolcream

Okay, this was some progress. Now the user can move the rectangles around the canvas and also I fixed a small but, which now enables you to deselect the object too!

0
coolcream

So in this devlog, i changed quite a few things. First of all, there was a huge issue. I was allowed to look at the board even thought i was not authorized. That was a horrifying issue. So i had to research and do many different changes in my code to get it right. And second, I allowed the user to change the size of the rectangle to make it resizable.

0
coolcream

Coded a little bit of extras like having a selection layer, and a different color

Attachment
0
coolcream

Sooo, this was a huge progress. Now, you can actually draw stuff on the canvas. Only a rectangle for now, but this was difficult. The main part where I struggled was the part where I had to get the co-ordinates of the mouse-pointer and stuff. Here’s a demo.

0
coolcream

This was extremely difficult. I had to somehow map an svg element to my mouse-pointer. I used a tutorial for this and i got it right! This looks awesome! I just took an icon and made it change the position to the mouse-pointer’s position, but it took a lot of lines

1

Comments

Max
Max 2 months ago

Woah, nice!

coolcream

Coded a lot of stuff useful for the drawing features in the files, and also added the feature of selecting items in the toolbar.

Attachment
0
coolcream

Coded the backed work for the toolbar actions and for the front end, added the icons with labels.

Attachment
0
coolcream

Added a small tweak of getting some border colors for each participant in the room, and created a toolbutton component from scratch and imported it.

Attachment
0
coolcream

Created the participants component. I displays the user’s avatar

Attachment
0
coolcream

Fully created and finished the room info component. It looks goood.

0
coolcream

Created a part of the board info. This was fun and easy.

0
coolcream

Worked on the room authentication part of this project. This was a stressful task and i had to use live blocks and clerk both together to get this right. I struggled in a few parts of the unauthorized sections. Here’s a clip.

0
coolcream

Built the loading screen for the canvases.

Attachment
0
coolcream

I just finished setting up liveblocks, but I encountered a problem because the docs on liveblocks were not updated. So i had to research and get the right thing to work, now it works the same as before but i have added liveblocks in the backend so yeah
. Here’s a pic of the liveblocks board. Everytime a board is created, a new item is added to the list in this page.

Attachment
0
coolcream

This was some solid work, after a few days of break, i finally came back to work on this now, and i have started designing the canvas layout so when you click on a board, it leads to this board mage with the layout.

Attachment
0
coolcream

Created the search query functionality. This was fun and the last part for the website features. Now ready to start with the actual whiteboard code.

0
coolcream

Fixed a small issue of the favorite relation with the board not getting disconnected when the board is deleted.

0
coolcream

Created the favoriting functionality. This was a little hard because i had to create another backend table solely for this. I had to redo the same things i had done before now, because that was how it was needed. It was a little tough but at the end, it works! Here’s a short clip

0
coolcream

Okay, so this was a long devlog. I made quite a lot of changes. Here they are:

  1. Got back the images for the boards because it looked ugly with the clipboard icon.
    (Difficulty: moderate)
  2. Programmed the rename board dialog and its functionality. This was a very difficult part because i
    had to go back to the backend and do a lot of stuff in there.
    (Difficulty: HARD)
Attachment
0
coolcream

Created the delete function. This was easy. Also made the copy link function actually work!

0
coolcream

Added this cool actions dropdown in the board card. It looks awesome!!

0
coolcream

Added this cool loading screen for slower connections. With the skeleton component.

Attachment
0
coolcream

Created this new board button where you can finally create a new board. Like here. Also added a toast notification whenever a board is created.

0
coolcream

There was this minute issue of the layout of the board details part, it looked bad, so I was determined to fix it. The borders were not properly aligned with the card. So i rewrote the card and got it right! And also, I added the favorites button

Attachment
0
coolcream

Created this label and gave a cool effect on hover. It shows the name, author and the time created.

Attachment
0
coolcream

Worked a lot on trying to get the overlay correct on the car. So once you hover, there is a cool dark effect.

Attachment
0
coolcream

Changed the look of the board card. Not too stylish, and i tried experimenting with new components but this was the best fit for this card. I am still thinking on how to make the cards look better.

Attachment
0
coolcream

Added the actual representation of the board. Looks fine until now. But planning to remove the images. They don’t look very good for now.

Attachment
0
coolcream

Ohhh this was a very huge progress. I added a toast notification when a board is created, and now, even the data is displayed as a string on the homepage! I’m really excited thats its working

0
coolcream

Added the functionality of creating a board. Also the data gets stored in a table. A pretty good task and a huge step towards actually creating the whiteboard

0
coolcream

Just coded the API mutation with convex again for the boards, so that every time the user creates a board, it will run the mutation

Attachment
0
coolcream

Created the schema for the boards data using convex. And also updated some images.

Attachment
2

Comments

inw
inw 3 months ago

CONVEX MENTIONED!!!! FOLLOWING

coolcream
coolcream 3 months ago

Yay! Somebody who knows convex

coolcream

Added the empty states for no favorites and no search results. looks cool till now


Attachment
Attachment
0
coolcream

Coded the backend for ‘search’ and ‘favorites’ queries.

Attachment
0
coolcream

okay, this was scary. I somehow managed to mess up the task of filtering and the page was compiling and refreshing every 96 milliseconds đŸ˜±, and because of this, not even 1 action wan now working. I got scared and tried to find the problem. I searched frantically in all my changed files since the last commit and kept on deleting stuff. I still couldn’t find the problem. Hopeless, I went and reverted all changes since the day before yesterday’s commit. And it worked! It did not compile so fast anymore. So i went on and restored rest of the files, and while I was doing that, I found the CULPRIT. The function i had been using was making the file run almost every 1 second. I went up and searched for an alternative. And finally, this works perfectly until now!!

0
coolcream

Yes, this was fun. It was easy to make this new dashboards section. Looks sleek now. And also created a small startup for first time users.

Attachment
3

Comments

korbinvanettedev
korbinvanettedev 3 months ago

Very Cool! Will it work like Discord with the creation? It looks similar on the side.

coolcream
coolcream 3 months ago

Haha 😄 you got the idea right the users can switch between organisations like they switch between servers in discord. That feature of discord s really got me. So i decided to add that

korbinvanettedev
korbinvanettedev 3 months ago

I love that! Keep up the awesome work!

coolcream

Added this Invite members button to add members to your organization. I kept struggling to get the container to correctly fit the dialog box. And somehow, the sub sections in the dialog di not work, and nothing was clickable. So I had to look up for new solutions, I tried debugging using the console and failed. I had to look up into the docs of the component. Finally the error was the key. I researched on the error and found out that it was the key to the problem. And
 I fixed it. 😁

Attachment
Attachment
0
coolcream

Fully coded and finished up the search-bar to add the search to the url query. It was a difficult task to do, and I spent some time actually reading and cleaning up the code which I had written to get rid of unused stuff. Also added a small tweak to the mobile view of this website. Looks good to me now.

Attachment
0
coolcream

Added the search input component and styled the whole page to make it a little more polished and now it looks cool. Still have to code the search-bar.

Attachment
0
coolcream

Created a small filter for showing boards. I really liked this feature. This looks sleek and simple.

0
coolcream

I made the final adjustments to the main sidebar to improve its layout and usability.
After that, I started developing the organizations sidebar by coding its features and styling it so it fits well with the rest of the interface. Looks good to me now!!! Its coming together!!

Attachment
0
coolcream

Built tooltips for each button ‘on-hover’ using the tooltip component from shadCN ui. This was a very interesting process and I liked it!

0
coolcream

I moved the organization into a completely new component to make it easier to change. I also change the text to show the icons. I tools much better now. You can also switch between organizations.

Attachment
0
coolcream

Added a list on the sidebar to show all created organizations. A simple task for now


0
coolcream

Added a ‘plus’ button on the sidebar to create an organisation. Used icons from lucid.

0
coolcream

Built the basic UI of the page, look UGLY right now, but will work on the css later. 😁

Attachment
0
coolcream

Reorganized the folder structure, and made a dashboard page with a sidebar

Attachment
0
coolcream

Sorry for posting this devlog so late. I ran into a tough issue that I had to solve on my own. I was trying to show a different screen when the user was logged in, but nothing appeared on the page. I checked all my files to find what went wrong. In the end, I found the problem: the provider was set to show content only when the user was logged in. I fixed that, and everything worked again.

0
coolcream

Created a loading kind of page, to give it a better look. The loading has the logo of the website.

0
coolcream

oooh this leg took a lot of time. Now that i got all the backend right, I tried to actually integrate the log in system. I tried many ways, but they were just not working. So i went and looked up for documentation on the convex docs. After finding it, when I implemented that, I got an error saying that a function was deprecated. So I had to look up more and FINALLY, I got it working. Here’s a video

Attachment
0
coolcream

Fixed some small issues ad added convex and clerk for the backend. Clerk was used for the authentication stuff.

Attachment
0
coolcream

Modified the file structure and added a layout.tsx file with a new navbar, which renders in all pages of users.

0
coolcream

Just fixed an error in the users logic. Since the users logic is dynamic, every time I type something as a subpage in the address bar like ‘
/open’ or something, it was not giving a 404 page not found error but giving me the user id page, showing the user id as open. So i spent a little time on trying to fix it. At the end, I just went with the simplest solution. I routed the ‘user’ page inside a ‘users’ folder.

Attachment
Attachment
0
coolcream

Coded the users logic. This was a little tough because the tutorial I was following had an older version and the version I was using did not support the code block.

0
coolcream

Okay. So this is my first time working with next.js and tailwind CSS. Looked up on tutorials and also tries making some example pages. I also set up the project folder. All this was done with the cli tool for next js. This might be quite a long project. I also installed the button component from shadcn UI. and added a style.

Attachment
0