Research & RedwoodJS - Week 2
Tags: node, typescript, discord, redwoodjs
Published: 2023-07-24 19:33:51

---
title: Research & RedwoodJS - Week 2
published: true
date: 2023-07-23 19:20:42 UTC
tags: nodejs, typescript, discord, redwoodjs
canonical_url: https://matthewh.dev/research-redwoodjs-week-2
series: "HAL - Private Discord Bot"
---

Going into week 2 it was important for me to set my expectations. A lot of what I'll be doing is going to be very "newbie" and reading, which is completely okay. I just needed to understand that there will be no real deliverables this week.

# Weekly Goals

- Figure out a stack going forward.

- Read as much as I can.

That's it, 2 main goals. I wanted to set realistic expectations. I just wanted to research options available to me and just figure out the best plan I can.

# Understanding My Limits

People don't want to admit their limits, but I have to be realistic. I am the only developer in this project, I'm the only developer on the team working on these projects as a whole. If I lose sight of that I will put too much on my plate, get overwhelmed, burn out, and be forced to take a retreat from the project. None of this is an option, I **have** to make sure this project hits MVP and continues to be developed.

Knowing all of this, I need to take as much as I can off my plate so finding a solution for development and deployment for me is really important. I want to focus on writing features, not scaffolding. That's where our story will begin...

# Available Frameworks

💡

Did I miss a framework? Researching these can be difficult at times because there are so many that pop up every day. I went with the ones I know.

## [SvelteKit](https://kit.svelte.dev/)

I've always wanted to use Svelte and I wanted to use it here, but when doing some initial prototyping I was having issues with some libraries and would need to create more scaffolding than I felt comfortable with.

I have nothing against Svelte and plan to use it in the future because I _really_ like the direction Svelte is going.

## [Nuxt](https://nuxt.com/) / [Next](https://nextjs.org/)

Nuxt and Next both have similar issues, I would have to add a database package (in this case, Prisma). While this could prove to be useful in some areas, such as generating types to be shared across multiple projects, it would still create another integration I would have to maintain and another step in the workflow I'd have to figure out.

It was hard for me to move past Nuxt in particular because I've had a lot of experience with Vue in the enterprise space (particularly with [Quasar](https://quasar.dev/), shoutout to them for creating an awesome system).

Next was kind of a turn-off for me because Vercel, in my opinion, likes to lock people in. I have limited experience with them so take what I say with a huge grain of salt, but I moved away from Firebase for the same reason and I was getting the same vibes from Next. It also was annoying to find that to get better tooling for Next you have to ALSO implement [Blitz](https://blitzjs.com/) (as recommended by a lot of developers in that space).

## [Remix](https://remix.run)

Remix looks cool and while I probably won't use it I wouldn't discourage it. It still has the same issues as SvelteKit, Nuxt, and Next. I'd have to add scaffolding, actually even more because it's built to be built into a web server and doesn't provide anything for that.

## And others...

I came across a few other smaller ones but most weren't in a state where they'd be easily usable for a project like this.

# Incoming [Redwood](https://redwoodjs.com/)

I've heard about Redwood for years and I've been looking at them off and on. I've never had a project to use with them though, now I do. I leaned more and more toward Redwood the more I looked at what was available. Redwood just has it all, it has everything I need to start this project without thinking too much about it.

I have to be realistic, however, I will be integrating more external libraries and having to build services to reach out to an external API as well as integrating this it a real-time Discord bot. There will be challenges and I'm curious what kind of challenges we'll face.

I can't speak too much to the pros and cons of Redwood, yet; but I am excited to dive in and experience it first hand.

# The Stack

I'm still exploring the final stack but I can share what I have so far.

## NodeJS/TypeScript

Everything will be using TypeScript, it's just what I feel the most comfortable with.

## [RedwoodJS](https://redwoodjs.com/)

This will be the entire web side of things and manage the database.

## [Supabase](https://supabase.com)

I'm still considering other options but I'll more than likely just fall back to Supabase for database, auth, and storage.

I may end up using functions too, but this is unlikely.

## Others...

I have some ideas around using Influx, error reporting with Rollbar/Sentry/etc, RabbitMQ for queues and passing that onto workers to manage message parsing, etc. There are a few different ideas in my head running around but for now I'll start a bit more simple.

# What's next?

Over the next week, I'm going to:

- Create a new Redwood app.

- Setup the GitHub repo.

- Setup Supabase locally.

- Implement Discord authentication.

- Start scaffolding out some models (may use Obsidian for this to make visualizing it better).