Giter Site home page Giter Site logo

caesura's Introduction

Caesura - Poetry Remixer

Create your own art by remixing classic poems!

Link to project: https://caesura-poem-remixer.herokuapp.com/

Home Page

Poem Creation Page

Sample Poem

How It's Made:

Tech used: React, NodeJS, Typescript, Express, MongoDB, Passport, Material UI

The frontend client is built in React with Material UI, and the backend is built with Node.js, Express, and MongoDB.

The frontend pulls poem data from an internal database, and then provides it to the user in batches of three. The user selects one of the three choices for each batch, and that adds the selected line to their remixed poem. When the poem is done, the app gives the user choices between 5 randomized words taken from the titles of all the selected poems. Once the user has created their remixed poem, they click the "Create" button, and the frontend sends that data to the server, which processes the request and adds the poem data to the MongoDB database.

Users can then access a feed of all created poems, or a profile list of all the poems they have created. From the profile list, they can delete poems they have created.

Uses the Passport Local Auth strategy to manage user sessions. Users can login and signup through the login/signup pages, and the server authenticates them using the Local Auth strategy and stores their sessions in the database.

Optimizations

I'm looking forward to expanding and optimizing this as time allows! Upcoming features: -(DONE)Users can comment on poems with randomized mini-poems -(DONE)Created internal poem database -(DONE)Users can like poems -CSS overhaul and adding animations -Users can remix other users' poems

Lessons Learned:

After the database I was pulling poem data from went down, I decided to build my own, so that I could control, and therefore schedule, the app's maintenance downtime. This would also allow me to better manage the poems' content, because giving users the ability to mix and match words can lead to NSFW outcomes.

Visualization of this repo

caesura's People

Contributors

matthewbozin avatar

Stargazers

Shawn Charles avatar  avatar

Watchers

 avatar

Forkers

caleb-cohen

caesura's Issues

Rework component CSS

-Move 'by {name]' below poem
-Reduce amount of space below Poem.js/Comment.js components
-Reduce amount of empty space in Choice.js component
-Prettify Choice.js component

Add snaps

Users can 'snap' a poem, much like 'likes' in other social media

-Add 'snaps' array to Poem model
-When someone 'snaps' a poem, it adds their username to the array and they cannot snap it again
-Poems show 'snap' count, which is length of username array
-If user snapped a poem, they can unsnap it, which removes their username from the array
-Feed page can sort and order poems by number of snaps

Animations with Framer Motion

Test Framer Motion animations in CreatePoem.js/CreateComment.js

-Animate choices when they appear
-Animate onhover over choices
-Animate choice selection

-Animate title words on hover/choice/appear

Add commenting with mini-poems

Users can 'comment' on other users' poems by creating a mini-poem

-Add comments array to Poems model
-Build version of creation process with limited lines and no title
-At end of this process, pushes the comment to the Poem id in question
-Comments can have snaps

Create internal poem database

-Create BasePoem Mongoose model
-Harvest poems and import them to mongoose
-Instead of making API call to database, frontend samples mongoDB poems collection and returns a set of unique poems

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.