MarkPieszak / flatfile-technical-level-3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flatfile Level 3 Technical Take-home

Welcome to the Flatfile Technical Challenge!

This challenge is based around a Trello clone. It involves adding features, finding bugs, and putting up a PR. The front-end is written in React, the server in NestJS, and the database is Postgres.

At Flatfile we value work/life balance. This assessment is not timed and we don't expect you to design a production ready application. We're more interested in your approach, so don't get too caught up on how much time you're taking. Have fun with it! Beyond being fun we also want this challenge to be informative, realistic, and well defined. For these reasons feedback is very much welcomed.

⚠️ Before starting, fork this repository to your personal Github or Gitlab account.

Setup

Prerequisites

Docker version 20 is the supported platform for interacting with this challenge. If you aren't comfortable running Docker it will not be held against you and it is acceptable to run the application natively.

NodeJS is suggested but not required.

Start the application

To start the application, run the following:

docker compose up -d

To view the application logs, run the following:

docker compose logs -f

The web application is serving off of http://localhost:3000

The API server is serving off of http://localhost:3001

Run tests with coverage

To determine coverage for both the client and server, run:

npm test -- --coverage`

...in the respective directories.

Run Prettier

To run prettier against application code for both the client and server, run:

npm run lint:prettier:fix

...in the respective directories.

Create a migration

From the server directory, run the following to create a new migration script:

npm run migration:create NameOfTheMigration

Run a migration

From the server directory, run the following to run all migrations:

npm run migration

Instructions

  1. Fork this repository to your personal Github or Gitlab account
  2. Complete one of the three features listed below.
  3. Identify bugs and inefficiencies
  4. Once complete, open up a PR

You may utilize a third-party library, though it isn't required to do so.

Requirements

All commits and branches must follow the conventional commit messages standard.

All features must have 50% test coverage in the client and server.

Feature 1 - Card drag/drop

Description

A card can be dragged and dropped from one section to another or into another card as a subtask.

Acceptance Criteria

  • A card can be dragged and dropped from one section to another
  • A card can be dragged and dropped into another card as a subtask
  • A card with a subtask has an icon indicating so
  • A card with subtasks can be opened in a modal view where the subtasks are listed

Feature 2 - Card details

Description

A card has a detailed view that contains a title, description, and images.

Acceptance Criteria

  • A card's details can be opened in a modal view
  • A card's modal view contains editable fields (details)
    • Title
    • Description
    • Images
      • Limit to 3 images

Feature 3 - Multiple boards

Description

The real Trello application allows sections and cards to be part of a board.

Implement a "boards" feature that meets the needs of the following scenario: Customers have multiple teams each with their own set of cards. Having one board is hard to manage when teams are working towards separate goals. Allow each team to have their own board which contains their own set of cards.

Acceptance Criteria

  • Each card is associated with one board
  • Sections remain the same between boards
  • Board names are unique
  • Users can
    • Create new boards
    • Switch between the different boards

About


Languages

Language:TypeScript 80.3%Language:HTML 8.2%Language:JavaScript 8.1%Language:CSS 2.1%Language:Dockerfile 1.3%