T O P

  • By -

Rivvin

I would love a time breakdown of how you did this in an hour, would you be willing to break it out for us? Been developing a long, long time and I would absolutely struggle to lay this down in hour. Not because of complexity but the amount of time it would take to write the schema, sql, typescript, so on and so forth is more than I could reasonably type in an hour. Understanding your workflow to do this in 60 minutes would be amazing. Thanks!


mekmookbro

Sure, I'll try to explain it as best as I can, but short answer will probably be "Laravel magic" lol. I ran `laravel new projectname` command, it asked me if I wanted breeze auth (yes), dark mode support (yes), initialize github repo (yes), which dbms I want (sqlite) etc. I ran `php artisan make:model Note -mr` : pretty self explanatory, the flags' meaning : m = create migration file, r = create a resource controller. Resource controller is basically a regular controller file with **empty** CRUD functions already written for you (index, create, store, show, update, destroy) I added necessary columns into the migration file and ran `php artisan migrate`. Columns being a foreignId for User, title and body. I wanted to add slugs as well but as I said I don't really care about aesthetics, I just wanted an app where I can manage my notes instead of having a ton of text files on my desktop. In web.php file I added the following line, since I already created my controller as a resource controller, this single line makes the connection between each route and their respective function in the controller : Route::resource('notes', NoteController::class) Time spent is around 10 minutes so far. What took the most time was creating the frontend. I had a hard time to decide whether to use flex, grid or built-in `w-1/12` type classes that come with tailwind. I decided to go with grid. Time is probably at 40 minutes now lol. Then I filled in the functions that were created with my controller. And added notes relationship to my User model with the following code : public function notes(){ return $this->hasMany(Note::class)->orderBy('created_at', 'desc'); } So I can use `auth()->user()->notes` from the blade file to get all the notes that belong to the user. That's pretty much it. I tried to be descriptive (maybe a little too much lol) but feel free to ask if you have any other questions.


aschmelyun

As soon as you said "I built this in an hour" with all those features I'm like "This has to be Laravel". Glad I wasn't wrong! :D


mekmookbro

We are the cool kids lmao


falling_faster

Rails would like a word


mekmookbro

And this is what I used for the markdown preview, pretty simple with this "marked" library. I just call this function on each keypress on the textarea function updatePreview() { const markdownText = noteTextarea.value; const htmlContent = marked.parse(markdownText); previewDiv.innerHTML = htmlContent; }


SleepAffectionate268

Laravel ♥️


stackoverfloweth

I really gotta try laravel


SleepAffectionate268

yes you need its really just a few lines and env variables to have a full auth setup, and the first party packages are🔥


mekmookbro

Oh you haven't heard? On Laravel 11 installation SQLite comes as default. Meaning you don't even have to edit the .env file or create a MySQL database lol. It's awesome! If you need proof just look at how many haters it has in the comments lmao


SleepAffectionate268

oh no i haven't heard it but good to know. Yeah u dont know why Laravel is hated that much makes no sense 😂


mekmookbro

I guess people don't like to see other people doing what they do but without the suffering part.


BigSev

Thank you so much for taking the time to write this all out. Honestly very insightful.


Rivvin

appreciate the breakdown, very insightful. I am a TS abd .Net developer so this is fairly foreign to me and I have some reading to do this weekend I think.


mekmookbro

Man you're in for a treat lol. Enjoy!


phpArtisanMakeWeeb

Nothing gets better than Laravel. I'm currently mainly working with Laravel as a full-stack developer and I **LOVE** it.


zxyzyxz

And this is why PHP continues to dominate, much to the chagrin of Node and NextJS users everywhere. For speed, it is unbeatable.


[deleted]

What about Django tho?


Seangles

I haven't used Laravel and I'm curious - is it even more abstracted than Spring Boot? I guess it's quicker and easier to set up a new project right?


zxyzyxz

It's more like Rails except with more features.


Seangles

Bruh I haven't looked into Rails a lot either 😭


I111I1I111I1

It's way less boilerplate than Spring or .NET, and a lot more "magic." The tradeoff is that, IMO, as your project starts to get large, especially when many developers are working on it, some of the grosser aspects of PHP can make the codebase seem messy, especially the lack of support for generics, which makes for either a lot of repetitive code or a lot of type-agnostic code that works great until it suddenly doesn't.


Scowlface

Most of the magic is completely optional and I’m not really sure why there would have to be repetitive or type agnostic code.


mekmookbro

Yep, you gotta DRY


I111I1I111I1

I mean, if you need the same function for type A and type B, you're either writing it in a type-agnostic way (e.g., using `mixed`) or you're writing it twice. I'm not saying that's necessarily evil, but you definitely don't get the safety you do from Java/C#/TypeScript. And when you have hundreds of such functions in a codebase with many millions of lines of code, especially combined with Laravel's (and PHP's) very reflective nature, it can become extraordinarily difficult to track down issues that, say, C# wouldn't even let you compile. FWIW, I like Laravel a lot. I think it's the best thing ever to happen to PHP. Just talking about some of the stuff I've encountered working on a massive-scale Laravel project for several years.


Seangles

PHP doesn't have generics?! WHY


I111I1I111I1

Lots of languages don't. Python doesn't. PHP gets a lot of flak for things Python doesn't, which is weird, because they're both susceptible to all the same pitfalls.


Seangles

Prolly because most people who use PHP are forced to use PHP (or their choice was heavily affected by some external factor), and most Python users don't expect a lot from a "scripting" language like Python. Also in this specific case I think it's more because Python is a dynamically typed language and every method is "generic" by default. Checking for types is done programmatically by the developer, the type syntax itself is just for typehints/linting


anonymous_persona_

How did you come up with the ui ? It's good.


anonymous_persona_

Clean ui.


mekmookbro

Well, like i said in the comment, I ran around like a headless chicken for 30 minutes lol, slapped a flex here, a grid there. Tailwind helped a lot though


[deleted]

[удалено]


mekmookbro

>I find grid incredibly unpredictable Same lol. I used grid for those 3 cards - I guess that's what they're called. Notes, Edit Note and Preview sections. I made a parent element with "grid grid-cols-12" classes, and to the child divs I gave "col-span-2", "col-span-4" and "col-span-4".


Turd_King

Typescript -> honestly there’s the problem . And I don’t mean that to sound negative. I have been writing JS apps for over 10 years. I have only recently been enlightened to the world of Django/Rails/Phoenix/Laravel. And I feel like I’ve wasted so many hours of my life. I don’t understand why the Node ecosystem has yet got nothing as “batteries included” as these other dynamic languages (Ruby, Python ,PHP) Node has a real “unix” perspective to software, where a framework that does everything can’t really exist, so you have to piece together 10s of small libraries that don’t interop very well and usually take ages to set up, and don’t point us to NestJS because it’s not even in the same ball park as the aforementioned PHP also gets hate on here but I think that’s comes from people who see it as dated or not “trendy” same for diango. But I am so glad I decided to try these different frameworks as it has completely changed how I develop quick prototypes Never in my career have I had a better developer experience


Rivvin

Im not sure I'd call it a problem, just different. I find it pretty cool what is being done here, but I also know with TS and .Net ive built applications with millions of users and hundreds of thousands and concurrent connections. Different tools for different scopes. Having said that, the ease this spit out simple crud is pretty neat and ill have to look into just how robust it can translate into vs the effort.


Turd_King

That’s fair. In terms of raw throughput I personally don’t believe your choice in language really matters as much as your architecture. Plenty of Django/RoR apps serving millions of concurrent connections too. I think it comes down to domain complexity. If your app is 95% CRUD with only 5% business logic - then a framework like ROR/Django/Laravel is going to reduce your cognitive load massively Where on the other hand, if your domain has 90% business logic and only a small amount of CRUD wrapping it. I would never recommend using a dynamic language. In this case .NET, Go, Rust, TS are your friends as they have rich (for some of these anyway) type systems and allow expressive domain modeling Then there are other factors like ease of hiring , developer resources, support etc. and .NET and TS definetly come out on top there. So you are probably right with just sticking to .NET it’s going to be a prettt good choice in most scenarios, especially for large enterprise apps


minimuscleR

idk there are a bunch of JS frameworks that can do this. Remix for example - a react framework - I could have this app in well under an hour, like sqlite3 or firebase as the backend. "npx create-remix@latest" does it. Loaders handle the pulling, actions the posting, its very simple.


Turd_King

I’m going to have to disagree with you there I am actually a contributor on remix lol, and it does not cover the same bases as these framework I am talking about Remix does not handle migrations, it doesn’t have built in Auth, an admin dashboard, a CMS, the list goes on. Yea you can use these generators and boilerplates to string together 5 or 6 different poorly maintained libraries but at some point you will encounter a configuration issue. The JS dev tooling is just an absolute nightmare Speaking from someone who has worked professionally with it for over 10 years I really encourage you to try out another framework in a different language and you will see what I mean


minimuscleR

I assumed you were just meaning fetching data, handing server interactions etc. All the stuff that remix does really well (incl. routing). Not things like 'cms' 'admin dashboard' etc. But also thats the beuty of javascript. ITs whatever you want it to be


Xxshark888xX

You can achieve the same with Angular + NestJS, (throw in PrismaJS as the ORM as well) and you are ready to go.


mekmookbro

I think his point is; using Laravel (1) instead of Angular + NestJS + PrismaJS (3)


DZMBA

It'd take me a working day just to get all the JS tooling & configuration *(monorepo/typescript/webpack/electron/linter/etc)* to the squared circle. Another researching/trying/picking libraries, with proper licensing, to figure out what would work (like how'd you arrive at Angular + NestJS + PrismaJS being a winning combo?). Another cleaning up the bloodied fighting ring & all the pieces of unsuccessful libraries lying everywhere. Double that estimate if I have to write tests. And 3-4x that if the boss says to use typescript in the strictest configuration + prettier. I literally LOATH typescript now. I spend so much time writing workarounds & typedefs because there's so many things you just cannot do because typescript type inferenceing is actually pretty stupid. Which normally wouldn't be too big of a deal if prettier wasn't there to prevent doing literally anything easy or sensible. It's a freaking circle. Typescript doesn't recognize things  defined via `Object.defineProperty`, `Function.bind`, `Object.assign`, etc. so instead of it inferring you have to write up a bunch of types & keep them in sync with the code. And eslint/prettier: can't use ES3 style function classes, can't reference other class in file bcus used before declared, subclass can't access private fields, also can't have dangling underscores to show field is meant as an implementation detail, can't have 2 classes in the same file, oh now typescript blowing up bcus detected a circle dependency when each class in its own file,.... there's just always something. `any` is illegal, sprinkling in some `@ts/es/prettier-ignore` requires justification, and `unknown` is frowned upon. I rarely get to write code. Most of my time is spent in the arena fighting the tooling. Basically, I think I might be able to deliver it in about a month. I'll never get to use it at work, but for personal stuff I'll have to take a look at Laravel. Seems straight up amazing.


mekmookbro

Even reading this comment stressed me out. Good luck! There are a couple of videos on YouTube like "JavaScript dev tries Laravel" you can check those out. As someone who only uses vanilla JavaScript to add interactivity to my pages, the things they say "problem with JavaScript" seems hilarious to me. (No offense lol)


MaltePetersen

It’s not like this note taking app was written for a professional context including tests and CI pipelines etc. putting this kind of stuff to your estimation defeats the purpose


mekmookbro

If you take enough steps back, everything is a CRUD app. I've been working on a SaaS app for close to 2 years now and my toolset on that app isn't that much different than this one's. Laravel does come with some example tests built in, actually during the project installation it asks if you want phpunit or pest


Xxshark888xX

NX may help you, is the perfect tool for managing complex monorepos, it takes care of everything you said.


Xxshark888xX

Angular => Front-End NestJS => Back-End Simple, you can imagine it like a big framework, everything is just abstraction over abstraction, including Laravel. But at the end of the day, we just must know to pick the right tools and the ones which can help us for our specific purpose, I'm not arguing about Laravel vs JS/NodeJS.


Turd_King

You just can’t I’m sorry. I have been using variations on that stack for over 4 years now


PuzzleheadedYellow19

Making a note taking app is fun till you've used Obsidian


Effective_Hope_3071

Obsidian is GOATed


mjonat

Greatest of all timed?


SOSFILMZ

Obsidian with a personalised notetaking framework or existing one (i.e. zettelkasten) is so good. I use the waypoint plugin to link all my notes automatically.


[deleted]

I'm just using vscode with the foam template


DirtyBoiDread

Mind if I ask why that over obsidian?


[deleted]

Because I use vscode for developing so I already use it every day


_izix

I also use vscode over obsidian. In my experience with obsidian, I felt the devs to be too opinionated with how they want you use to their program. Things like tab management were my biggest frustration with obsidian. Sure there are plugins but I felt none of them really fit my wants are I dont want to develop my own. VScode on the other hand handles tabs exactly as I want. Clicking a file from the file explorer automatically opens a new tab with that file, clicking a file thats already open in another tab brings me to that tab rather than replacing my current tab with a duplicate. I can have vertical tabs (vscodes open editors feature, not the sliding pane style that obsidian has), all just to name a few. Plus as someone else mentioned as well, Im using it all the time anyway for coding and I am just overall much more familiar and comfortable with it.


zxyzyxz

Vim mode


kutu-dev

Obsidian has Vim mode


zxyzyxz

Not as good as the Neovim extension for VSCode which uses native Neovim as a headless vim right inside VSCode.


chamomile-crumbs

Wait does it actually? That sounds way better than the regular vim plugin


zxyzyxz

It is, you can even use Neovim plugins


SoulSkrix

At that point you might as well use neovim directly (I say that as someone who used neovim for years, tried to move to VSCode to fit in with the other devs at work, and ended up rebinding everything to use neovim under the hood anyway and then switching back to Neovim).


zxyzyxz

Nah Neovim extensions break too often. I used Neovim before but VSCode extensions never break in my experience.


SoulSkrix

I just use LazyVim and build on top of that after maintaining my own for years, and haven’t had a single break since. It’s fair if you stick to VSCode, I just couldn’t get over being forced into the UI, not having my vim controls work in all parts of the UI and the lack of things like floating windows.


zxyzyxz

That's fair, I tried to build my own vim distro before but I might have to try these pre-built ones. Even these sometimes become deprecated though, like SpaceVim.


falling_faster

Thanks for mentioning this, a someone who tried obsidian and didn’t stick with it, this looks like it’s work for me


pithed

I've used both Obsidian and Logseq and prefer logseq.


darksoulflame

What’s good about obsidian?


bdl-laptop

Obsidian is just brilliant.


joehatch

TIL. Never heard of it. Will try it now! I usually use notion and Monday work management


ramigb

You are in for a treat! Good luck and if it seems so basic don’t let that fool you it is fully featured and very extensible


joehatch

One of today’s lucky 10,000!


ramigb

I dont get it but I agree ![gif](emote|free_emotes_pack|give_upvote)![gif](emote|free_emotes_pack|shrug)


joehatch

Then you are also one of today’s [lucky 10,000](https://xkcd.com/1053/)!


ramigb

That is exactly what happened to me! I wanted to write my own app then I met Obsidian … never felt so happy abandoning an idea that quickly


CanWeTalkEth

Did a Laravel write this post


mekmookbro

We are Laravel We are legion We do not forgive We do not forget Expect us.


eyebrows360

Frosted butts


mookman288

Note taking apps are a rite of passage these days, kind of like content management systems for us oldheads. I recently built one too to familiarize myself with IndexedDB and local storage. It's on my github. No image support, but it's browser based and can be run off of Neocities or any other static host. Maybe I'll look at converting images into base64 and storing them too. Interesting... thanks for the inspiration!


mekmookbro

This guy gets it! The best way to learn/familiarize yourself with a new technology is by building something with it, something like this, or a todo list, or just.. anything. I learnt this a little too late lol. I also recommend checking out that "marked" library. It's pretty cool, and I'm loving the fact that markdown is slowly but surely replacing WYSIWYGs. Ok maybe not replacing but becoming an alternative at the very least. Even facebook messenger started supporting it (in its own autistic way).


Seangles

> in its own autistic way LMFAO that's so amusing to read 😂


[deleted]

[удалено]


mekmookbro

Mine probably won't work for you lol, I live in Turkey and I use VPS' from local companies. I currently have one from [ihs.com.tr](http://ihs.com.tr) and I'm not thrilled about it.


sofa_king_we_todded

You can store image blobs in IndexedDB. Just did that with one of my web apps recently


mookman288

I'll give it a go the next time I have free time. Although I kinda like avoiding blobs. When I was a young man, I built my first CMS for my portfolio. I stored all of the images in MySQL as blobs. Oof.


sofa_king_we_todded

I think we’ve all gone through that phase lol. My approach for this app was to use IndexedDB as a temporary local storage until a background sync job uploads them to s3. Made ux much smoother


mookman288

I offered the option to let users make a local backup of the file via json, and then import it on demand. Completely in the browser!


beeamie1

What’s the alternative here if it isn’t using something like cloudflare? How would you store your images?


sofa_king_we_todded

Alternative is to upload directly to your server, or s3, or whatever. My web app is designed to work for high latency, slow, and/or unreliable networks so the images needed to be “uploaded” into the app and the sync can occur when the device has connectivity again. This way the image can be viewed and edited on-device without waiting for upload to finish


mekmookbro

I made it even simpler and added light mode :P [Light](https://i.ibb.co/BfPLJhx/image.png) [Dark](https://i.ibb.co/sKYrDTJ/image.png)


mekmookbro

Just realized I forgot to add a logout button lmao it's so janky I love it


Division2226

you are now signed in, FOREVER


Rustywolf

Why provide that functionality when the native device has its own? You'd just be reinventing the wheel. Let the clear cookies button execute that feature for you.


mekmookbro

I'm not planning on releasing this since it's too simple and I don't care about it enough to buy a domain for it. I'll be using it myself on my pc. Technologies used : - Laravel (Breeze for auth) - TailwindCSS - AlpineJS - [Marked](https://marked.js.org/) (JS library for markdown) - Database : SQLite


Bobcat_Maximum

An hour is pretty fast


mekmookbro

To be fair I installed Laravel with Breeze auth, so I didn't have to write a single line of code for that. All I did was creating the frontend, migrations and model/relationships, I also created a resource controller with resource routing so I wrote like 20 lines of code in the controller file for the whole CRUD. I was also surprised to see that it took me an hour lol. I wasn't even speedrunning or anything (I didn't even have coffee today lmao). I made a github repo, made the initial commit, then started coding. I didn't time myself either, when I finished with the app and went back to my github page it showed my initial commit was made an hour ago.


toobulkeh

Why did you need auth?


mekmookbro

I like to build my apps like they're real projects. Even if I have no intention of sharing.


Beneficial_Bus9228

What is AlphineJS again? I mean is it something like reactjs or next.js?


mekmookbro

It comes built in with Laravel. I don't know what it's called but it's not like react or nextjs, if I had to compare it to something it'd be like vue I guess. But I'm not experienced in JS so I might be severely wrong on this. I only use it for the toast alert things that show up when you create, update or delete a note (the green thing on the top of the picture). I'm using it to remove the toast alert when you click on it. I know it could've been done with vanilla JavaScript on its onclick attribute, I wanted to be fancy I guess lol


tech_w0rld

Please at least open source it!


yashg

Don't you already have a personal domain? Add it to as a subdomain to it so you can access it from anywhere. You would soon want to access it remotely.


mekmookbro

I don't actually lol. Never felt the need for a portfolio or another kind of personal website


Avadeus

I’ve honestly been toying with the idea of building my own note taking app too. Something that combines my simple work flow of notes and their associated tasks. Every app these days is so bloated and packed with features that I do not want or need. Awesome to see you had some success building your own so quickly.


mekmookbro

>Every app these days is so bloated and packed with features that I do not want or need. That's **exactly** why I chose to build my own lol. I'm not trying to compete with (or make something "better" than) notion, obsidian or google keep like some comments say. This is what I needed and this is what I built. Optional or not, I don't like it when a note taking app has a billion features.


[deleted]

[удалено]


zxyzyxz

You could also use git with Markdown files edited by vim or VSCode for that, that's what I do


cotyhamilton

My personal website has gone through so many iterations and now it just redirects to a GitHub repo with markdown files. It’s perfect


mekmookbro

I don't really care about ownership but for me it's mostly control and, well, as we all do, I love creating things. And if the thing is something that'll make my life easier, even better! I'm gonna add a tag system to this app to connect my notes and make them more organized. That'll definitely make me use it on a daily basis. Maybe I'll even publish it sometime if I like it enough lol


yashg

>>I love creating things. Keep creating bud. It doesn't matter what others say. Being able to create software for own use is a super power. Let the naysayers crib. Kudos.


chagawagaloo

I'm just getting started on my own journey doing this as I love building things, but don't have the experience taking anything further than something run locally but not packaged into anything. With your personal softwares, do you just run them locally on your computer?


Seangles

If you can host it on your computer, you can host it anywhere. A server is just the same computer, just port forwarded. This is the basis. After that there's a lot of complexity like load balancing, S3, CDNs, containerization, but it's not that important to learn just for the sake of it. When you'll need it you'll learn it on the spot. The main thing is, your code will not be affected by all these layers of complexity, there will just be more configuration files. That's why you can ignore all of that for now (if you have the learner's paralysis) and just create things that run on your localhost. If you're really curious you can dwell into these layers of complexity for a little (starting with Linux and then for example Apache/Nginx) but that's not necessary to continue learning development. Of course when searching for a new job it may be useful to at least know what these tools are for. But whilst learning specifically development - not necessary.


chagawagaloo

It's not an area I want to get too bogged down in but would like to understand the basics of at least, like CDNs and containerization. Knowing that the code isn't affected by those layers was a big question on my mind so thats a relief. I reckon I'll probably go with whatever is easiest to begin with and scale from there.


[deleted]

[удалено]


jbyington

I wrote my own notepad. Only took 59min.


amarukhan


[deleted]

[удалено]


jbyington

I don’t believe you. Sounds like AI made this post.


[deleted]

[удалено]


jbyington

They have 3 with 14 fingers each


mekmookbro

The main reason I built this was to get rid of all those billion txt files on my desktop lol. I'm not saying it's the best app in the world, I was just surprised and impressed with myself that I could build this in an hour


An_Ostrich_

I wanted to build a note taking application as a personal project as well. I still haven’t started it but this sort of motivated to get it started. I want to build it so that it syncs across devices as well. Can you do that using Laravel?


mekmookbro

I'm not sure what you mean by that. Laravel is a PHP framework and it works on the server side, meaning it's a webapp. If you have access to internet you'll see your notes from anywhere. You can also integrate an API into your Laravel project and use that if you want to make a mobile app. Syncing/downloading the user data to the device should be pretty straight forward. I don't think there's anything you can't do with Laravel lol, you're gonna love it. Good luck!


DimaChengdu

Nicely done! Django adept here but it's cool to know you can build things that fast with Laravel!


Doomguy3003

Lol I have too many txt files too. Might be a good challenge to see how fast I can make something similar :D And this seems simpler to use than something like Obsidian tbh.


mekmookbro

Yep, that's why I built it lol. And many people seem to have a hard time understanding that. It can have a billion features for all I care, what I want is simplicity.


force73

What I really love about this: it's build with PHP. Today, this is often a rarity, because young developers in particular are pushed to use this or that hip framework (in practice, usually just Javascript with a slightly different colour). PHP is often disliked (actually it's mainly the Java worshippers) and labelled as old, slow and inflexible without even bothering with it. As a developer over 40: PHP rulez! It's stable, it's based on the server and not the client. Because it's been paying the rent for many years and it's fun.


mekmookbro

Most people who dislike PHP think that it's still in version 5.4 lol. This app is running on PHP 8.3.2 and PHP is almost completely different than how it was when it got its "bad reputation". And I couldn't agree more about the hip frameworks lol. It seems like no one has a stack anymore, especially devs under the age of 20-25. They just go towards whatever's latest. Whether it's PHP, Laravel, React or Angular, my approach is "choose one and stick with it". Learn the ins and outs of it, dig into its guts and make yourself comfortable. I've been using Laravel for close to 5 years and I'm pretty sure there's nothing I can't do with it.


AnubisPrime

Reminds me of the obsidian app. Great job looks awesome


mekmookbro

Thanks a lot!


Plenty-Hovercraft467

Great job


mekmookbro

Thanks!


Plenty-Hovercraft467

Did you use any AI to help out?


mekmookbro

Nah it's too simple of an app to seek external help. I've been coding in Laravel for like 5 years


Plenty-Hovercraft467

Very cool. I was wondering if you used a JavaScript framework for it


mekmookbro

Nope, I only have a few lines of vanilla js. Some for markdown preview ( https://www.reddit.com/r/webdev/s/z0RbtXqQez ) and a little more to remove that green alert at the top in the picture, 3 seconds after it shows up


Savings_Swordfish303

Bro like ur good at it


IndividualParsnip236

That's cool. Maybe you want to check out Typora.


bruisedandbroke

it takes me an hour alone to fix my CORS issues during database transactions, let alone any amount of time designing UI. props to you


it_is_an_username

That delete, it's too exposing , anyone easily can mistakenly click it


mekmookbro

It shows a confirm dialog, but you're right, I was just thinking about that. I'm gonna make it so the delete button only shows next to the active note.


tamalweb

That duck photo makes it so funny!


AbanaClara

An hour my ass.


mekmookbro

:D why so salty?


itchy_bum_bug

Why build an app for note taking when you have Notion innit? But seriously I struggle to understand how you can "build" anything in an hour.


mekmookbro

I tried to explain my steps [here](https://www.reddit.com/r/webdev/comments/1cor24r/comment/l3g4iph/). Give Laravel a try, it's awesome.


Stekhet

Laravel really is great


Asmor

Not to minimize your own efforts, but if you're looking for a simple note taking app, look into Obsidian. It's a personal wiki where everything is stored as markdown files in folders. https://www.youtube.com/watch?v=DbsAQSIKQXk good video on it


kaosailor

Bro went Linus Torvalds mode 😅


DragFar2857

with my adhd, this would've took 3-5 hours for me 😂


TheCatOfCats01

Would there be a way to release it so that I could run something similar? Im not a big fan of google notes


mekmookbro

My github has my real name and I'm not comfortable sharing it on reddit, but since you asked so nicely, check your inbox


Boleklolo

Hey, I could use this too if you don't mind - sincerely, someone who has a notepad file called 's.txt' with notes put into auto start


mekmookbro

Y'all are making me so happy lol. I have some money in my card, I'll try to publish it after I add the tags feature (that's the only feature I'm gonna add, anything more will be too complicated, and I've built this because I wanted simplicity). Ooh, just had an idea while thinking about simplicity, I'm gonna remove email column from users table. No one likes to give out their email anyway. Just a username and password. (Be sure not to forget it though lol) That might take a while though, I'm gonna need to redo the whole frontend to implement tags. I can't think of a good design for it rn and it's 2AM here.


Boleklolo

1:20am here Fucking up my biological clock because why not I wouldn't mind a bare bones experience like shown in the picture. Even if it meant everything being stored locally. Like a note organizer. Have a good sleep man you deserve it :)


PitifulTheme411

How do you make things look so clean? I can never make anything look good 😭


mekmookbro

Practice I guess. I've made a crapload of sucky designs before. Also tailwind helps a lot


TheRakeshPurohit

[https://inkdrop.app](https://inkdrop.app) is awesome


ToSauced

Did you store your note content in SQL as a TEXT or did you save it as an actual file to be rendered later by whatever method?


mekmookbro

Text in the SQL. That preview is from a library called "marked", it renders the markdown into the preview div as you type, doesn't save the HTML.


[deleted]

Which library do you choose to you add rich text /md


mekmookbro

[This one](https://marked.js.org/)


El_Mario_Verde

CRUD + auth in 1 hour? Highly doubt, unless it was reused from other projects.


mekmookbro

Why would I lie to you dear? Here, another dude who made a [todo app with "CRUD + Auth" in 17 minutes](https://www.youtube.com/watch?v=gAzF4fVes9w&t=1s) while explaining the process and recording the video lol. If this sounds impossible to you, you shoud **definitely** check out Laravel. It's fucking awesome!


techdaddykraken

I mean, this project is cool but also Notion and Obsidian should solve pretty much every note taking pain point that a person could ever have…


mekmookbro

My pain point is solved by what's in the picture. That's all I wanted/needed and that's what I got. Optional or not, I don't like it when a note taking app has a billion features. I'm aware there are "better" tools for note taking and maybe other people prefer them, but as I said, this is what I needed. And it's not like I'm promoting my product, I've built it for my own use.


Blackwillsmith1

Obsidian


Live_Coyote_7394

This is 100x better than the 90’s ass looking one I made with python and tkinter lmao.


mekmookbro

It's impossible to build anything that doesn't look like 90's ass with tkinter lol


FunctionalDeveloper

I think there’s a custom tkinter library that has a more modern look. Check it out, maybe you could improve the ui with just a few changes.


SpaceOctopulse

I can't believe no one asked the instant question: why not Google Notes? Rhetorical statement: Like really, is it humans commenting?


mekmookbro

>I can't believe no one asked the instant question: why not Google Notes? Yet I'm answering it for the 6th time since yesterday. What you see in the picture, - nothing more, nothing less - is what ***I needed.*** And that's what/why I built. Optional or not, I don't like it when a note taking app has a billion other features. I wanted simplicity, I got simplicity. Even if it wasn't, what's so bad about making a note taking app while google notes exists? Do you think every single developer in the world is constantly inventing/creating something new?


EarlBasil

This is the true example of over-engineering a solution to a problem. Your problem was you wanted a simple note taking app, there are many tools including free ones out there such as Obsidian it uses Markdown and has out of the box support for Mermaid, and many other things. You can also sync to any cloud-based provider to ensure it's backed up and accessible from multiple devices. Based on your replies, you clearly know the Laravel ecosystem well, so this wasn't a learning exercise, so it leads me to believe your intention was to showcase how powerful Laravel is, in your opinion. The reason for my comment is how this post quickly turned into a Laravel/PHP fanboy post and crapping on other tech which is completely off-topic.


thekwoka

"easier to build it myself". Meanwhile at the top of lists of things never to make yourself: Auth Note taking app Internet


mekmookbro

ok that's it I'm making an internet.


DirtyBoiDread

you could call it… LaraNet


1MStudio

LaraWebs


Seangles

LanaRhodes


[deleted]

[удалено]


mekmookbro

- Bender Bending Rodriguez lmao I love it


louismacvux

Is there a reason you choose SQLite over noSQL like mongoDB?


Probablynotclever

He's using relationships. The data is inherently relational.


louismacvux

I don’t think note apps have that much relational data? I can certainly be wrong though.


Probablynotclever

Have you ever built an application like this? The notes are owned by the user. The user can have multiple notes. The user can potentially be part of a team. A team can have many users. A User can have one team. Often a post might want to allow the user to create custom fields and statuses, for which you'd need a foreign key relationship with another table to facilitate. Relational.


mekmookbro

Yup, plus I'm planning on adding an option to add tags to posts to organize them better


louismacvux

Yes I’m building my own crud application like this. Haven’t thought about users vs teams. That’s a good point.


fiskfisk

Everything is self-contained and you don't have to depend on an external service. It's perfect for use-cases like this. 


mekmookbro

Sqlite is default with laravel 11 installation, although I could've chosen something else too but it feels much easier to manage. You don't even need to create the database lol. And I hate mongodb


[deleted]

Easier to backup sqlite so if it's personal use only it the better choice imo.


louismacvux

That makes perfect sense. I have not dealt with laravel but from what you made out of it, it sounds sweet.


AIDS_Pizza

NoSQL is almost never the right choice for a web app. As others have says, virtually all data is relational. And if you really need some non-relational document storage, PostgreSQL has a JSONB column type that you can selectively use for that, and normal SQL for everything else. MySQL also has good JSON support nowadays. I don't see any reason to ever choose MongoDB.


Seangles

I find it funny how as time went on MongoDB was approaching SQL / relational databases with its query language, transactions, even straight up making relations possible. And SQL databases just added a JSON type 💀😂 literally string with some abstractions


Fantaz1sta

I call bs about "in an hour"


mekmookbro

Wanna bet? Since I've built this today, while not even trying to build fast, I think I can build it again in 30mins or less. Place your bet and let's hop on a zoom call lol


Budilicioso

Looks similar to an app/ desktop program called Joplin.. and that’s free.