DEV Community

Rossano D'Angelo
Rossano D'Angelo

Posted on

5 1

How to build a todo app with React and Firebase Database

Day 1

📅 11-06-2019
🕐 1h
🏁 Initial setup and getting ready

Initial setup

I’m going to use create-react-app tool to scaffold the project folder. It’s a tool provided by Facebook that allow to easy scaffold a pre-configured starter project.

npx create-react-app todo-app

The initial project consists of

  • node_modules: contains all necessary dependencies. It’s generated scaffolding the app with create-react-app tool (there’s a npm install into it)
  • public: contains few files like the index.html, the application favicon and a manifest that contains few basic application settings
  • src: contains the code
  • .gitignore
  • package.json: there are all the project information like the version, the author and mainly the dependencies the application needs to work properly
  • yarn.lock: contains all the dependencies Yarn needs with relative versions

To run the starter basic application it’s enough to do

cd todo-app
npm start

npm start is one of several pre-configured commands I’m going to use to develop this application. Other commands are:

  • npm test
  • npm build
  • npm eject (stay away from it for now)

Get ready for components

In order to work with a sustainable and scalable structure, I like to keep things separated. I’m going to create two folders for components.

These two folders will contains (surprise) components!
The only difference between them is that a container is a component that manages the application state so it’s a stateful component. Other components are stateless components.

The main component <App />

Let’s create the first component.
I’m going go to move the App.js, App.test.js and App.css into their own folder ./containers/App/:

// App.js
import React, { Component } from 'react';
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        Placeholder
      </div>
    );
  }
}

export default App;
/* App.css */
.App {
  text-align: center;
}

No changes to the App.test.js at the moment.

Update index.js - importing App component - because files location is changed and delete useless files like logo.svg.

The <Todo /> component

Let’s create the <Todo /> component into the ./components folder. Create Todo.js, Todo.test.js and Todo.css.

// Todo.js
import React from 'react';
import './Todo.css';

const todo = () => (
    <div className="Todo">
        <p>Placeholder</p>
    </div>
)

export default todo;
/* Todo.css */
.Todo {} /* Empty for now */

Todo.test.js is similar to App.test.js:

import React from 'react';
import ReactDOM from 'react-dom';
import Todo from './Todo';

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<Todo />, div);
  ReactDOM.unmountComponentAtNode(div);
});

Now I can use the <Todo /> component into the <App /> component, doing:

import React, { Component } from 'react';
import './App.css';

import Todo from '../../components/Todo/Todo';

class App extends Component {
  render() {
    return (
      <div className="App">
        <Todo />
      </div>
    );
  }
}

export default App;

Check out the code here

GitHub logo rossanodan / todo-app

Simple to-do app built with React.

This project was bootstrapped with Create React App.

How to run locally

git clone https://github.com/RossanoDan/todo-app.git
cd todo-app
npm install
npm start



AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay