Svelvix is a starter pack with :
.env.local
from the .env.dist
and fill itbunx convex env set BETTER_AUTH_SECRET=$(openssl rand -base64 32)
The App.Locals contains the user if logged, and a ConvexHttpClient with the user token. You can use them directly in all your load functions and actions.
Use :
<script lang="ts">
import { useConvexClient } from 'convex-svelte';
const client = useConvexClient();
</script>
Check the following docs for adding more context to your IDE/LLMs :
To understand these technical choices, here's a simple rule: I want the simplest possible stack to be able to do as much as possible. When I talk about simplicity, I mean that the final code should ultimately be as simple as possible. LESS CODE = LESS BUGS. The final result must be the fastest possible application, with minimal client-side Javascript.
Another rule: I limit dependencies as much as possible. Both the libraries installed in my project and dependencies on external services. For example, using Clerk or an equivalent for authentication means that the day that service is down, I'm down. I only want to be down if my server is down.
Note: I have bad news for you... I am neither a prophet, nor a fortune-teller, nor the wisest person on Earth. Therefore, I do not hold the truth. All of this is just my personal opinion, and I'm not forcing anyone to share it.
Svelte components are much simpler to write than React or Solid. Svelte's compiler allows me to have very fast components while being less limited than Astro (which I recommend if you're making a "showcase" website; here we're talking more about a web application).
I hate Tailwind CSS components with 40 classes. It's hard to maintain because it's unreadable. DaisyUI simplifies all that with a very practical theme system! I avoid Svelte UI libraries (UI frameworks like Carbon Svelte, SvelteUI, Flowbite Svelte, etc.) because using them makes me dependent on them for the Svelte version I want to use. If Svelte releases a new major version that requires these libraries to update, I have to wait for their updates before I can use that new version myself. So I avoid them as much as possible.
I loved SQL, then I hated SQL. I loved classic ORMs (Doctrine), then I hated classic ORMs. I loved Prisma, then I hated Prisma. Convex, I love you!
Native real-time, everything is just code (very simple and pure code!), the components are great, the limitations force me to think carefully about the architecture... In short: I love Convex.
Of course, you should self-host Convex with Coolify.
Do I really need to explain why?
I only use Bits-UI to fill in HTML gaps. Can't wait for native comboboxes and date range picker!
Very simple to use, excellent performance, I like their modular vision. Plus, perfectly usable in the Convex functions environment.
A few random libraries I recommand you to use @thisux/sveltednd if you need to sort list, Lucide for icons, Gotenberg for generating PDF, ckeditor5 for WYSIWYG, apexcharts, libphonenumber-js, svelte-tel-input, Melt-UI, and all svelte-put packages.