DEV Community

Cover image for Root. A simple react redux application with bootstrap
michaella latkovic
michaella latkovic

Posted on • Edited on

1

Root. A simple react redux application with bootstrap

I wrote a quick overview of the react redux app I built recently. I wanted to build an app I would actually find useful while also practicing building a React/Redux application.

I brainstormed any challenges I was having that could be aided with the help of a useful app. As I am constantly learning and taking online courses, I began to think about all the digital platforms I use.

Udemy, Coursera, Khan Academy, EdX, online textbooks... with so many wonderful resources online, it would be great to have one place you can go to manage and organize all your learning platforms!

I created Root. Root allows you to consolidate all your digital learning platforms into one application.

Alt Text

You can see all your courses for a single application.

Alt Text

Each course, also has the functionality to add to do items.

Alt Text

Backend - a rails api

I built the backend as a Rails API with a PostgreSQL database. I wanted to keep this app simple (at least to start) - I included 3 models as a basic framework.

  1. Platform
  2. Course
  3. Todo

Alt Text
For serialization I used the active_model_serializer gem and intentionally nested everything into the platforms index page.

Frontend - react/redux/bootstrap

To organize the frontend architecture, I have 3 containers and 12 components.

The top-most component, the App component, is responsible for three main things.

It renders the NavigationBar and Jumbrotron components. It renders The Platforms container, which holds all other containers and components. It also renders a Layout component and holds the same layout for entire application.

      <NavigationBar/>
<Jumbotron/>
<Layout>
<PlatformsContainer/>
</Layout>
Enter fullscreen mode Exit fullscreen mode




Overview: Containers + Components

App
Navigation (functional)
Jumbotron (functional)
Layout (functional)

Platform Container
Platforms (functional)
Platform (functional)
PlatformInput

Course Container
Courses (functional)
Course (functional)
CourseInput

ToDo Container
ToDos (functional)
ToDoInput

The redux store holds the platforms which will hold all courses and each course's todos as this is this way I designed my backend. This meant I could use only one single reducer, the platformsReducer which made it easier on the frontend to keep track of which platform courses and todos belong to as I always returned platforms.

Alt Text
(expanded - to show courses nested)

Alt Text

I built 4 actions fetchPlatforms, addPlatform, addCourse, and addTo.

Bootstrap

One thing that was important to me for this project was to really understand Bootstrap. For all my prior projects, I have done all by CSS by hand, which was great because I wanted to really understand how to do all the styling without help.

However, I am at place where I feel comfortable and can now upgrade to Bootstrap and save TIME!

Once I got the hang of importing the react-bootstrap components - the app really came together. The bootstrap docs are fantastic!

To see all this code in detail, feel free to visit the GitHub repos!

Root - backend repo

Root - frontend repo

Next Additions:

These are additions and functionalities that I'm currently working on adding:

*Add a user model.
*Ability to login/sign up for an account.
*Delete/Edit a platform/course/todo
*Check off a todo

Happy coding,
Michaella

Neon image

Build better on Postgres with AI-Assisted Development Practices

Compare top AI coding tools like Cursor and Windsurf with Neon's database integration. Generate synthetic data and manage databases with natural language.

Read more →

Top comments (0)

Neon image

Set up a Neon project in seconds and connect from a Ruby application

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Get started →

👋 Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay