Giter VIP home page Giter VIP logo

nnangpress's Introduction

Welcome!

Nangpress is a single page application that makes single page applications, a website that makes websites.

Contributing

Pull requests, opening issues and just saying hi are all welcome :).

Technical Overview

As we are using om to render sites from a single large datastructure (monolith), and each change in the data causes a re-render, we could consider each render as loading a new and different site, although for example we wouldn't typically think of transitioning between pages in a single page application as moving to a new site. Well if the change of state is large enough, and we have the logic in the code to render a large change in the underlying data stucture, then we could render a change that would be percieved as a new site. Then if you wanted to code a new site you would just code a new data structure, and the logic would do the rest.

In Nangpress the aim is to provide enough logic to render a range of sites, and then render a particular site by loading its corresponding data strucutre. Moving the 'coding' of sites to the datastructure level has many advanatges.

For example we can provide a GUI for creating these datastructures, allowing non-coders to create sites. In Nangpress this GUI is the site itself. A Nangpress site has two modes, ordinary viewing mode and 'edit mode'. Having two people collaborate in real-time on editing a site through this GUI is more or less reduced to the problem of keeping their site datastructures synced. Creating sites is very cheap, baring assets a site is just a few kb of data. Backing up a site is easy, the user can just download their datastructure.

Future

  • Greatly improve UX

  • Realtime collaboration

  • Have option to allow end users to personalize the site based on their user account.

  • Allow end users to edit the site and send their edits to the site owner as suggestions.

Running and deploying

Dev mode

  • boot dev
  • visit localhost:3000

REPL

  • boot repl --client
  • (start-repl)

Deploy

  • boot production build target
  • uglifyjs your.js -c -m -o your.min.js
  • copy over _redirects

Testing

  • boot auto-test

Routing

Routing is considered part of the application state. There is a master component that will render different sub components based on the routing state of the app, stored in the monolith.

Jquery plugins

  • In general the html for these should be rendered with dangerouslysetinnerhtml. We are looking to essentially sidestep react, ideally there should be no jquery plugins.

Firebase notes

  • Unable to store empty values in firebase. Must compensate for this in code

Glossary

! - At the end of a function name means the function makes a change to application state only.

!! - A function that makes a change outside of application state, such as saving directly to database or making a change to the DOM outside of react. Ideally we won't see too many of these.

<< - Means the functions reads data from the outside world

nnangpress's People

Contributors

leonmanrolls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nnangpress's Issues

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.