Show HN: Real-time notes app built with Vue.js, inspired by Notational Velocity
notational.co
notational.co
Is this meant to be a cool tech demo, or a real product? I noticed the author mentioned adding new features and a premium version in another comment. This leads me to believe it's intended to be a real product.
With that in mind, I have a few questions:
1. If this is inspired by Notational Velocity, a very popular and real product, why is this also named Notational? I understand if you're doing a cool tech demo that it's not a big deal, but if you plan to charge money for this you probably shouldn't copy their name.
2. Was "Notational Velocity but real-time" your hypothesis of what would make this something people want to use/buy? If so, what about all the other very standard features that note-taking and thought storage apps have? Do you plan to hit baseline with those?
3. How do you compete with the larger companies who offer these apps for free to their users? Google Keep, Apple Notes, etc.
4. Is the real-time feature the only way you plan to make this different/better than the others?
I'm not trying to be a downer here, but I feel like I see "X app but real-time" posted to HN on a weekly basis now, like it being real-time is going to be the differentiator that makes it wildly popular. Those products then go on to ignore half the reasons why the others have users. Even if they reach feature parity, their one differentiator is "well, it's real-time". I'm not sure that's enough.
If this is just meant to be a cool demo of Vue.js (with an awesome homepage), well done, ignore my comments =)
If so, Simplenote already does this and has apps for almost all platforms.
This is the site you go to when you need to get something out quickly.
1. The name was something I came up with quickly so I could focus more on making the product. It stuck and I haven't had time to think of a new one. The creator of NV opened up an issue on GitHub (https://github.com/tmm/notational/issues/2), which I am addressing.
2. My hypothesis was "NV plus web." I needed something I could use at home (on my Mac) and at work (on Windows). The plan is to keep it simple so you can create/retrieve notes really quickly. Users have suggested markdown, etc. which I think makes sense., bu it's never going to be a general purpose notes app for everyone.
3. I'm not going to actively compete. Even if no one else uses it, I still will. I would rather have a small number of users that love it than try to appeal to a huge audience that's sort of indifferent.
4. Speed and minimalism are the main differentiators (whether it's creating a new note or trying to find an old one). There are some other cool things (like quick note sharing and dark mode) that make it a joy to use (but hey, I made the thing).
Even though Vue has less libraries/extensions than something like React, the core: state management, routing, Vue component spec are quite good.
vuematerial is slightly behind in the no. of components. After some more research I have settled on using http://www.muse-ui.org/#/index. It has full parity with callem'all's component set. In fact, the website is nearly a full clone of that. And the developer is pretty active.
Case in point - There was an issue with the auto-complete. Raised an issue - https://github.com/museui/muse-ui/issues/495. And it got merged pretty quickly.
Which in turn made me use Vuejs for this hackernews search that I have been building (http://searchhn.com/).
The documentation is excellent and Vue is well designed, it took a few hours from scratch to learn and build the demo (PS: Not a web developer)
Do you also have a lot of data vars like "inputSearch" "inputTypeSelectionCheckbox" ?
Btw one thing I like about Vue is how easy it is to build a traditional server-rendered app but use Vue only on pages that really need it. Not saying you can't do this elsewhere, but with Vue it is so easy!
There will always be a shiny new tool, no matter which one you choose. Good products can be built in any of them (even Knockout which I loved too). Most of the frontend fatigue is just paradox of choice. For me what works to reduce paradox of choice is knowing that good architecture and clean code is much more important than the selected framework. Most of them have a lot of documentation, examples, so we should focus on creating good products, and again, most of them can be used to created high quality web apps.
[1] https://www.patreon.com/evanyou [2] https://vuejs.org/#sponsors
It has gained big popularity in the PHP/Laravel world.
On the other hand, we have a somewhat large production vue 1.0 app that we just can't justify quickly upgrading to vue 2.x. I hope to get some more LTS version information from Vue team so we don't have to upgrade to Vue 3 in 2018...
I'm not going to go into details why Vue is awesome (see all the other comments for that.), but I don't see you bringing any valid arguments for your statements. Sounds like a new framework has been pushed down your throat, and that hurts. I get it :)
"The core library is focused on the view layer only"
It seems to be pretty clear that it's meant to be a simple, easy to deploy, view layer only. I think it accomplishes that purpose pretty well. There are additional libraries (Vuex, VueRouter) which extend this core library into something coming close to a full MVVM framework, but those libraries are all maintained separately and not part of the core.
I'm in the process of doing that very thing for Angular.
By itself, Angular has features to help you do things, but it's far from codifying how a LOB application should be built.
It sounds like some jr devs went willy-nilly with vuejs, but they could have done it with React, angular, jquery, etc...
So you are saying that Vue.js is good for experienced devs because it's flexible and lightweight, right? Then I agree.
1. Show the product
2. Show the product
3. Let someone sign up
How many times I've created a new note related to something I wrote about before, but didn't want to search for. Now I'd basically be forced to search for it when I tried to create the new note and I'd assume this would help keep all those thoughts and ideas at least somewhat related to each other.
[1] https://itunes.apple.com/us/app/nvnotes-note-taking-writing-...
[1]: https://itunes.apple.com/us/app/1writer-note-taking-writing-...
http://brettterpstra.com/2015/01/28/my-pick-for-best-ios-nva...
What's the replacement you mentioned? I didn't see any info on the linked site.
I like Vue because it's easy to pick up and it gets out of your way. It's not as complex as React, but still very powerful and extensible. Vue's browser extension is also top-notch.
I like working with them as a stack because they are both very transparent, which makes it easy to reason about when you're passing data back and forth between the server and the client. The only way I can describe it is that it feels very "natural".
Elixir is a fairly deep language, but you don't need to know it inside out to become productive with Phoenix. Obviously it depends on what type of app you want to develop, but you can probably piece together a simple CRUD app just by reading the official Phoenix guides. Everyone has a different style of learning though so it's hard to say beyond that. Ultimately, just like with Rails, knowing the language itself (i.e. Ruby) will be very helpful once you get beyond the basics.
Specifically, there were a few things that took a while for me to fully wrap my mind around. For example, data is immutable, so loops are written differently. Instead of a traditional for loop to loop over a collection, you would instead use recursion. So if you're like me and are used to reaching for a for loop or a while loop to iterate over collections, you'll need a bit of time to get used to some of Elixir's mechanisms.
[1]https://www.amazon.com/Elixir-Action-scaron-Juri-cacute/dp/1...
I decided to take a look at the official getting started guide. Looks pretty good. I like how rigidly everything is organized. Though, there are some things that put me off a bit:
* There are a lot of dependencies just to get a simple hello world app running.
* I need to have a Db installed even though the application doesn't touch a the Db? Does that mean the Phoenix stores its configuration in a Db? I don't like that. I try to keep config in file format.
* Honestly, working with ecto outside of initial model creation looks kind of nasty. I could be looking at this wrong though.
* I've never been a fan of functional languages for one reason: Too many damn symbols in the syntax! It appears that Elixir definitely does a better job having an understandable syntax compared to say, Haskell. That said, the one operator that always gets me is `|>`. I understand what it does, it's just difficult to type and I always felt like a simple `>>` would make sense as well as be easier to type. This is rather nit-picky, but I write a lot of code, so ease of syntax is actually a very important consideration for me.
* There seems to be a lot of lock-in if you want to use the CLI tools. What I mean by this is that the CLI tools, specifically `mix` seem awesome. However, it seems like that in order to use them, you need to use a very specific set of libraries. This isn't necessarily a bad thing, but I wonder if this would effect long-term flexibility.
* Did I mention the dependencies? It seems like every CLI command requires dependencies to be installed. This could be my own misunderstanding or a failing of the guide.
No. You can use an in-memory repo, or a flat file. Phoenix's initial configuration assumes you'll be using Postgres, but that's easy to change/remove.
>>Honestly, working with ecto outside of initial model creation looks kind of nasty. I could be looking at this wrong though.
Ecto is interesting. Coming from Rail's ActiveRecord, it definitely gave me a bit of trouble at first. But then I realized that was because I was thinking of it as an ORM, whereas in reality it's more like a library that maps the data in your database into data structures in your app (I say "data structures" because there are no objects in Elixir, remember). What that means is that it's functionality is not as tightly coupled to your data. Here's a more in-depth explanation (I'm not the author): https://www.amberbit.com/blog/2016/2/24/how-elixirs-ecto-dif...
Over time I've come to appreciate Ecto, because it forces me to think more explicitly about what data I want to fetch/insert and how. It also makes the code easier to reason about.
RE: Dependencies, it's hard for me to say. I can tell you that compared to Ruby and Rails, Elixir and Phoenix are very lightweight. It's true that you need to install some of the underlying language tools such as Mix, but at the end of the day Phoenix follows a more a-la-carte approach compared to Rail's "everything and the kitchen sink" approach.
I am actually also working on notes editor in my spare time. Using vue.js and codemirror, keeping notes in local storage.
Was thinking of making the project public but not sure if anyone will be interested.
I really love the look of yours, by the way. It's super clean.
Also, all the code is on GitHub (https://github.com/tmm/notational).
Edit: comes with ctrl among 0ther keys that is.
I'm interested in things like a feature road map, privacy policy, business model.
Edit: OP posted below (https://github.com/tmm/notational)
You can follow along on GitHub, Twitter (https://twitter.com/tomfme), and I'll send email updates out to signed up users.
"Also, will add the same text to the top of the README.md and the footer of the home page, along with a link to notational.net."
He hasn't done those things yet, which is probably why people are confused about it.
For more details, email me at tom@meagher.co. I'm happy to help anyone learning to code/build apps.
For firebase one has to include the API keys and other info in the JS itself.
I think that this is just another mongo DB like hack waiting to happen. Becuase a lot of developers might not know how to configure firebase read, write access rules properly. So as far as I understand anybody determined enough should be able to read the JS and read and write(!!) to other people's data.
Is there something I am missing here?
It also reminds me a lot of a spiritual successor to KnockoutJS (which was/is my favourite JS clientside tool still).
It is probably a question of generation, but young people do not want to use the keyboard and do not value the agility that can be achieved. Not so long ago, I spent some time adding keyboard shortcuts to an ERP written in Angular, just to realize that only ~ 30% of users (those who had used the old DOS-based ERP) saw value in that requirement.
FIREBASE WARNING: The Firebase database you are trying to
use has reached its peak connections limit. If you are the
Firebase owner, consider upgrading. (https://notational-
velocity.firebaseio.com)
FF 53.0.2 on macOS, uBlock Origin isn't showing anything as blockedSmall nitpick: Displays really well on mobile, however, creating a note requires user to hit ctrl+enter, which is not easy to do on a phone.
Btw - the codebase looks neat and very well-maintained !
I assume it's not open-sourced, but I wanted to ask about the code nonetheless. I would have loved to see it to appreciate Vue.js better.
Also, is your search feature client side only?
Also, Ctrl+enter isn't working for me (Chrome, Linux)
It's a nice library, I've used it for a few projects.
Turns out its just a plain and simple reactive global store ! And the documentation is simply stellar.
Search is currently client-side only (using string_score https://github.com/joshaven/string_score). Eventually it could move to the server. Thinking about something like Elasticsearch.
Ctrl + Enter not working is strange. I tested on a variety of browsers and OSs. Can you message me at tom@meagher.co?
No idea why those two combinations are different for the browser.
To me it always feels legit when someone creates a side project as an exploration and wants to share it here no matter how sophisticated or innovative it turns out to be.
I like to think that we all share at least some bond where we can be open and honest with our creativity, and not really care about making money or other metrics that we have to care about in real life.
I called you cynical, maybe my thought is too idealistic, I understand that. Just a thought
It is simple, but contains more than just your average TODO example (also it's for notes). There are share-able links, auto-save, dark/light modes, and almost everything can be done with the keyboard.
I am making a pwa built with vuejs and material design. Its a forum software inspired from flarum and google inbox.
Its only 30% done, but its getting there ! - https://github.com/agnivade/adda
The goal was to build a product I could use every day. (Showcasing Vue is a nice side effect.)