Mateo Morris

I’m a frontend developer/educator working on Primo - a tool that makes web development more approachable by leveraging component-driven development & Svelte.


I spent the first two years of my career poking around WordPress theme dashboards trying to get my website to do simple things, when what I really needed was to get to the code.

Unfortunately, things have only gone further since then with the growth of the no-code movement, which makes building websites easier in the short-term, but at the expense of cookie-cutter sites, expensive fees, and most importantly - the inability to access the platform.

HTML, CSS, and JavaScript are incredible tools for expression. They let anyone with a basic text editor and accessible education put anything on any screen in the world, without the permission of a middleman, and without the fear that it could be taken away or sold to the highest bidder.

Modern frontend development doesn't help much in this regard either. Countless students are churned through coding bootcamps every year, spending only a few weeks on these fundamental languages before learning the libraries and tools which seem to appeal to hiring managers. And as a result, many developers only learn how to do things with specialized tools without understanding the basics enough to know how to use them.

That's why tools which make empower web developers should not only build on those fundamentals, but make them as approachable as possible. Svelte is a prime example of this - it literally builds on the fundamental languages of the web in that all valid HTML, CSS, and JavaScript is valid Svelte. It picks up where the web languages left off to enable component-driven development, reactivity, style encapsulation, and more, and its meta-framework SvelteKit enables more people to build powerful full-stack web applications. Combined with feature-rich open-source backends like Supabase, modern developers are more capable than ever of building interactive, accessible, instantly and globally-available software.

But there's still a gap when it comes to content websites, the kinds of websites that most people need. This area is filled with a host of cookie-cutter monthly services which effectively rent out websites, or WordPress. WordPress is great, but only because Drupal's a pain. WordPress' developer experience, server-reliance, and security vulnerabilities are probably far outweighed by its benefits for most of the organizations using it, but for many of them (and many more who just can't use it) they're prohibitive.

Primo is our attempt to build an intermediary tool - a fully approachable (any device, any technical background), enjoyable, and productive open-source tool for building and publishing common websites like blogs, landing pages, brochures, etc. Our hope is that it opens up the door for more people to start coding and publish their first live website within minutes without code, the command line, or documentation, creating a gradual learning curve towards modifying code and building full-stack applications.

Previous Work

  • 2018 - NewCity

    Oklahoma State University

    Built the frontend as components in Fractal that they put together into the main site and other departments' websites on subdomains. Seeing them take those base components and build out other sites was a large inspiration for thinking about how components work in Primo.

  • 2017 - NewCity

    Blue Ridge Parkway

    Created official mobile app for iOS and Android using React Native & a WordPress instance as a headless CMS.

  • 2017 - NewCity

    UNC: School of Education

    Collaborated on frontend and handed off for integration with WordPress.

Other things I've made

  • 2019

    Primo Press

    The precursor to Primo which started as a way to put up a curriculum page for my code bootcamp students at a custom domain without having to pay for hosting. I was close to monetizing it as a cheaper/simpler site builder, but seeing its potential as a dev tool encouraged me to expand its scope into Primo.

  • 2018

    Bored or Confused

    My first Svelte project - an app that allowed my students to quietly tell me if I had belabored too much on a topic (bored), or if I was going too fast (confused), as well as ask questions. It was working well, but then COVID hit.

  • 2018


    The podcast app I always wanted to exist - with shows split up into subgroups (called "stations") that would shuffle all the latest episodes from each. Built in React Native, but abandoned when I started teaching (and frankly because React Native is pain and there were 2^42 podcast apps by then).

Favorite tools