Meteor.js with Vite, Solid, and Tailwind CSS


In the world of web development, choosing the right tools can make a significant difference in the efficiency and quality of your projects. In this blog post, we will learn how to create a new project using four powerful tools: Meteor.js, Vite, Solid, and Tailwind CSS. This combination can elevate our development experience.Meteor.js with Vite, Solid, and Tailwind CSSMeteor.js is a full-stack platform that simplifies the development of web applications by providing a unified approach to building both the front-end and back-end. With real-time data updates, Meteor.js speeds up the development process and ensures you can create powerful applications.Vite is a next-generation build tool that significantly enhances development. Integrating Vite with Meteor.js and Solid can further boost development efficiency and application performance.Solid is a unique JavaScript library designed for creating user interfaces more efficiently. Rather than using a Virtual DOM like many other frameworks, Solid compiles its templates to real DOM nodes and updates them with precise reactions.Tailwind CSS is a utility-first CSS framework that enables developers to quickly design responsive, modern websites and applications without writing repetitive CSS code. By providing a set of predefined utility classes, Tailwind CSS streamlines the styling process, allowing you to focus on the overall layout and design.When combined, Meteor.js, Vite, Solid, and Tailwind CSS create a powerful synergy that can dramatically enhance your web development experience.Before diving into the tutorial, you should know that it's possible to quickly generate a Meteor.js + Vite + Solid app using the following command:meteor create meteor-solid-app --solidHowever, in this tutorial, we'll guide you through each step to provide a deeper understanding of the process.Create your Meteor.js projectStart by creating a new Meteor project using the --minimal flag. This option generates a project with the minimum required Meteor packages. If you don't have Meteor.js installed yet, follow our instructions here. Upon creation, a subdirectory with the same name is also created. Please navigate to the project folder and run it to ensure the proper setup.meteor create meteor-solid-app --minimalcd meteor-solid-appmeteor npm startYou should see a simple app as below:Minimal Meteor app screenshotTo use the most recent dependencies, review your package.json file and update your dependencies accordingly:..."dependencies": { "@babel/runtime": "^7.21.5", "meteor-node-stubs": "^1.2.5"},...Run meteor npm i to install the newly added dependencies above.Install Vite and SolidExecute the commands below to install Vite and Solid:meteor add vite:bundlermeteor npm i -D vite vite-plugin-solidmeteor npm i solid-jsCreate a Vite configuration file (vite.config.js) in your project root and import the Solid plugin. Since we are not using a standard Vite index.html file, specify an entry point to a new file that will be created inside the ui folder called main.jsx:import { defineConfig } from 'vite'import solidPlugin from 'vite-plugin-solid';export default defineConfig({ plugins: [ solidPlugin(), ], meteor: { clientEntry: 'ui/main.jsx', },})Write your code from this entry point, and let Vite handle it! ⚡️Create the entry pointCreate the ui folder and the file ui/main.jsx with the following content:import { render } from 'solid-js/web';import { Meteor } from "meteor/meteor";import { App } from "./App";Meteor.startup(() => { render(() => , document.getElementById('root'));});We will create the App component later. Now, replace the contents of client/main.html with: Meteor.js with Vite, Solid, and Tailwind CSS You need to enable JavaScript to run this app. Delete the content from client/main.js and add a comment as follows:// The main entry point for the app can be found in ui/main.jsx.Install and Configure Tailwind CSSInstall tailwindcss and its peer dependencies via npm, then run the init command to generate both tailwind.config.js and postcss.config.js.meteor npm i -D tailwindcss postcss autoprefixermeteor npx tailwindcss init -pIn your tailwind.config.js file, add the paths to all of your template files:/** @type {import('tailwindcss').Config} */module.exports = { content: ["./ui/**/*.{js,jsx,ts,tsx}"], theme: { extend: {}, }, plugins: [],}Include the Tailwind directives in your client/main.css file:@tailwind base;@tailwind components;@tailwind utilities;Create Your First Solid ComponentCreate the file ui/App.jsx with the following content:export const App = () => ( Meteor + Solid + Tailwind );From the app folder, run the meteor npm start command to launch your app. You should see a simple heading with an indigo color.Screenshot of the app with the title "Meteor + Solid + Tailwind".Using SignalsSignals are the foundation of reactivity in Solid. They contain values that change over time; when you update a signal's value, anything that uses it is automatically updated.To create a signal, import createSignal from solid-js and call it from your App component. Additionally, create an increment function that will be called when a user clicks a button.import { createSignal } from "solid-js";export const App = () => { const [counter, setCounter] = createSignal(0); const increment = () => { setCounter(counter() + 1); }; ...}Enhance your component to display the counter on the screen and include a button to increment the counter. Your complete App component should resemble the following:import { createSignal } from "solid-js";export const App = () => { const [counter, setCounter] = createSignal(0); const increment = () => { setCounter(counter() + 1); }; return ( Meteor + Solid + Tailwind You've pressed the button {counter()} times. onClick={increment} type="button" className="rounded bg-indigo-800 px-2 py-1 text-sm text-white" > Click Me );}Great! From the app folder, run meteor npm start to launch your app.Animated Gif clicking on the buttonDeploy Your App and Share with FriendsCreate a Meteor Cloud account by using this URL, log in from your terminal, and execute the command below to deploy it for free:meteor loginmeteor deploy meteorsolidapp.meteorapp.com --free --mongoYou could also create a Git repository with your project and deploy it from there. Learn how to do it by reading our guide.By using a meteorapp.com domain, there's no need to register one just for testing your app. The --free --mongo flags deploy an app using our free plan, including MongoDB.Keep in mind that the subdomain meteorsolidapp.meteorapp.com is already in use, so you'll need to choose a different one for your app. Now, please share it with your dev friends!Enjoy exploring the complete source code for this tutorial on this GitHub repository. If the code has changed since the time of this post, you can always refer to this specific release for the original version.ConclusionIn this blog post, we walk you through creating a Meteor project with Solid, Vite, and Tailwind CSS. We cover setting up the appropriate configuration and making your first Solid app.Let us know if you would like to see part 2 of this blog post, showing how to connect subscriptions and methods from Meteor to Solid. Remember that you can already see an example app by generating it from the command line using the --solid flag.Feel free to share your feedback or ask questions in the comments below. Happy coding!Meteor.js with Vite, Solid, and Tailwind CSS was originally published in Meteor Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.