Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/anastassia-b/art-book-app

🖼 ArtBook is a full-stack web app for exploring art portfolios. Ruby on Rails, PostgreSQL, React+Redux.
https://github.com/anastassia-b/art-book-app

jest postgresql react-redux rspec ruby-on-rails single-page-app

Last synced: 15 days ago
JSON representation

🖼 ArtBook is a full-stack web app for exploring art portfolios. Ruby on Rails, PostgreSQL, React+Redux.

Awesome Lists containing this project

README

        

# ArtBook

[![tested with rspec](https://img.shields.io/badge/tested%20with-rspec-brightgreen.svg)](https://github.com/rspec/rspec-rails)
[![tested with jest](https://facebook.github.io/jest/img/jest-badge.svg)](https://github.com/facebook/jest)

https://artbookapp.herokuapp.com/

ArtBook is a portfolio showcase web application. It is a full-stack app built using a `Ruby on Rails` backend, `PostgreSQL` database, and `React/Redux` front-end architecture.

## Planning & Design





Design documents can be found in the wiki!

## Technologies

### Backend
* Ruby On Rails, PostgreSQL, Heroku, Cloudinary



### Frontend
* React/Redux, HTML5, CSS3/SCSS, npm, webpack


### Testing
* RSpec Rails, Jest

## Features & Implementation

1. **Users:** A user can sign up, log in, and log out. Each user has a profile.

2. **Projects:** Users own many projects, which are composed of images. Images belong to a specific project. Projects can be explored on the dashboard.

3. **Comments:** Users can comment on projects and delete their own comments.

4. **Likes:** Users can like and unlike projects. A users liked projects are displayed on their profile.

```ruby
# User Model Associations
class User < ApplicationRecord
# ...
has_many :projects, dependent: :destroy
has_many :images, through: :projects, source: :images
has_many :comments, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_projects, through: :likes, source: :project
# ...
end
```

### Secure Authentication
* BCrypt for password-salting and hashing for a secure authentication system.
* Guest / Demo Account



### Modals

Modals were used to implement the Login/Signup session forms, as well as project views.

```jsx
render() {
const project = this.props.project;
return (







{project.title}
{project.user}












);
}
```

### Comments and Likes

Users can comment and like projects.



## In-Progress

- [x] In progress: setup Continuous Integration (Jenkins build passed)
- [ ] In progress: Deploy through AWS server and remote Postgres database.
- [x] In progress: Configure Segment

## Future Features

#### Infinite scroll

This will allow users to keep scrolling to retrieve more content, instead of fetching it all at once.

#### Follows and User-specific Feed

Users will be able to follow each other, allowing for a customizable feed per user.

#### Search by content (tags)

Categorizing projects will allow users to search and filter through projects.

#### Upload projects

Users will be able to upload, edit, and destroy their own projects through the API.