Announcing: Meteor Vue Enterprise Starter - an opinionated, pre-configured app starter kit


#1

Hey everyone,

I’ve been working for awhile now on a complete application starter kit using Meteor and Vue that’s ready for enterprise development. This includes unit tests, e2e tests, code linting, a working CircleCI continuous integration config with build caching, and lots of other things. This is very opinionated and enforces strict rules that make code re-use and working with a large dev team manageable. If you’re a solo dev working on a small MVP, this might be overkill.

I’m using this as the base of a startup I’ve just created, so this will continue to be supported for awhile. I know there aren’t tons of resources on using Meteor and Vue out there, hopefully some will find this helpful.

What’s included

  • Meteor 1.6
  • Vue 2
  • full accounts-password flow (sign up, sign in, reset password, verify email)
  • alanning:roles integration, with an admin dashboard to browse users and modify their permissions
  • vuex 2
  • pre-configured CircleCI file for a working CI build
  • vue-router 2
  • vuex-router-sync
  • vuex-alt
  • vue-meteor-tracker
  • iView UI toolkit
  • vue-media

The following development tools are used:

  • Jest - unit tests
  • Chimp - e2e tests
  • semistandard - code linting
  • meteor-husky - git hooks
  • CircleCI - continuous integration



Note: There may be a couple issues with this, I’m still actively working on it and will be merging changes back into the starter kit as they’re finished. A project is never 100% complete, so I just wanted to get it out there sooner than later. If you find something that you think is wrong/missing, or have an idea for a feature that is generic enough for an app starter kit, let me know.


What is the simplest setup for meteor+chimp on circle-ci?
#2

Really nice! Congratulations. I wanted to start a new project with Vue, this will help a lot.

The only thing is, we are going to use Bootstrap, so we would have to change some bits and pieces.

Does it need to be “attached” to the iVew UI toolkit? Just out of curiosity? Because in general Bootstrap will give more options when developing an app (templates, snippets, components, etc).


#3

It’s certainly possible to rip out the iView framework, it would just take a bit of effort. All of the accounts-password code, tests, etc would still put you in a better spot than starting from scratch. I considered making a branch without iView integrated to give that option, I just don’t have the time atm. Perhaps once the starter kit is mostly finalized and I know I won’t be adding a ton more to it, then it would make more sense.


#4

Damn, this is sooo nice, thank you so much for making this one, keep up the good work!


#5

Much appreciated! A refactor to Vue might be in the cards for me in the not too distant future. Should that happen, will take a serious look at this.


#6

I can’t recommend Vue enough, it provides a really wonderful development experience. Give it a shot :slight_smile:


#7

Hi @efrancis,

This looks really great! I just checked it out. Glad to see it working.

One question for you: How about deploying this? It looks like it’s running two servers (one listening on port 3003 and one on 3000).

I’m just a hobbyist, but I’ve been able to deploy meteor apps for friends and family to heroku. Meteor has been a great way to prototype and Blaze has been easy and fun to use. Now I’d like to learn Vue. I’m looking for projects that minimize the time spent on grunt work.

Back in the day, meteor was fantastic because in an afternoon you could write an app and deploy it to share with the world. It’s gotten a little trickier to deploy. Now as a newbie you have to pick your projects carefully to avoid getting sucked into huge time wasters on configuration issues, buggy packages, and abandoned code. Hoping that the meteor community can keep providing value to the perpetual newbies among us!

I’m also thinking about what it would look like to port a few business apps over to meteor (we currently are using Zoho plus Google drive – works okay but I’ve been curious to see if I could knock some things out in meteor that might be more fun to work with than either of those platforms). We’re a small company and build all our own “apps” in house (really mostly spreadsheets with a few custom functions thrown in). No budget for it; we just cobble together stuff on our own.

I’m a CS grad (from the '80s), used to work for a web development firm (in the 90s), but now I own a tiny mechanical contracting firm focusing on energy efficiency. We don’t really need anything more than what we can do with a few spreadsheets, QuickBooks and free Zoho apps. But coding is a weekend hobby and I’d like to learn Vue.

Really glad to see a project that works out of the box that lets me not have to deal with all the stuff meteor takes care of, so I can focus on learning Vue and building a few prototype apps. I understand there may be a bit of overkill in Meteor Vue Enterprise for just building small apps, but I figure I can just accept the defaults and try building a “real” business app with it that might actually end up being (somewhat) useful for our company.

A sample showcase would be super, along with instructions for everything from setting up your development environment to deploying production code. One of the things meteor did right was a tutorial that showed how to build an app with meteor. A tutorial showing how to build a couple sample apps with your starter kit would help you hook developers. Show them how you’ll save them time (don’t just tell them), and you’ll win users.

Before I get too excited and spend a weekend with it, wondered if you had advice for deploying apps built with Meteor Vue Enterprise.

Thanks!
-Fred

P.S. Hope you don’t mind me asking, but what’s your goal for the project? Are you looking to land clients for consulting work, or do you want to go the Patreon route and build a platform that you can be paid to develop and maintain, or is there a larger company behind your efforts?


#8

Hi again,

Two things that I’d like an starter app kit to include:

  1. A setup screen for creating admin users when the app is first run with an empty database. I don’t like to put admin usernames or passwords in code. If there are no users in the database, we know that it is a fresh install. Assume the first user is the admin and ask for a username and password.

  2. A CSV upload screen for entering usernames and emails. After setting up the admin user, I’d like the option of uploading a CSV file with a list of usernames and emails. These users should be created without a password and require email verification (send an initial password via email and require them to login and change it), or given initial passwords known to the admin user that need to be changed the first time the user tries to use the account.

Hope these ideas are useful!

Cheers,
Fred


#9

Hey @fredhorch, glad you liked the starter kit :slight_smile:

The server on port 3003 is the Vue development server to support hot reloading, it’s only a local dev thing so in prod it still deploys like a regular Meteor app. You could deploy this as you would any other Meteor app with something like Galaxy or meteor-up.

P.S. Hope you don’t mind me asking, but what’s your goal for the project?

I built this because nothing like it existed and I really love both Meteor and Vue. I’m using it as the base for my startup’s application, but the plan is to always have it be free to provide a base for anyone who wants to use Meteor and Vue together.

A setup screen for creating admin users when the app is first run with an empty database. I don’t like to put admin usernames or passwords in code. If there are no users in the database, we know that it is a fresh install. Assume the first user is the admin and ask for a username and password.

This has already been built actually. My company’s main application is a fork of this starter kit, and I’ve added a few features that I’ll be merging back into the starter kit. The features I’ve already built are:

  • user roles integration with default roles of “super admin”, “admin”, “employee” and “user”
  • a bunch of fake test accounts that are assigned to various roles, which only get added in local development
  • when the server is deployed to prod, the very first user to create an account is automatically set to “super admin” role
  • you can set a config value that specifies your company’s email domain, then any new user account with their email at your company’s domain will automatically be set to the “employee” role
  • an accounts admin dashboard for those with “super admin” or “admin” role that lets you browse through the users (with their email addresses obfuscated) and change their permissions
  • a beta invite system that creates a REST route where you can POST the email addresses of users who have signed up for a beta (we have a static non-Meteor marketing page which has a “sign up to learn more” input that POSTs to this endpoint), with an admin UI where you can browse those beta sign ups and manually send them invites via email one at a time. the UI also shows if/when users have accepted those beta invites
  • a config that let’s you only allow employees with emails at your company’s domain to create account (for preprod or closed beta)

Once I can finish testing these features and have some free time, I’ll be merging them back into the starter kit and announcing a new release.


#10

On 12/15/17 12:26 PM, efrancis wrote in part:

P.S. Hope you don’t mind me asking, but what’s your goal for the
project?

I built this because nothing like it existed and I really love both
Meteor and Vue. I’m using it as the base for my startup’s application,
but the plan is to always have it be free to provide a base for anyone
who wants to use Meteor and Vue together.

Fantastic!

A setup screen for creating admin users when the app is first run
with an empty database. [...]

This has already been built actually. My company’s main application is a
fork of this starter kit, and I’ve added a few features that I’ll be
merging back into the starter kit. […] I’ll
be merging them back into the starter kit and announcing a new release.
Also fantastic!

I’m looking forward to the new release and will take a look at it then.

Any idea how long it might be before you have time to roll out that new
release?

Cheers,
Fred


#11

That’s hard to say, I’m juggling a lot of work between my startup and some other open source stuff. I’d like it to be out by February but we’ll see