Giter VIP home page Giter VIP logo

mcac-js's Introduction

MCAC

Build Status Code Climate

This repository holds the code for the JavaScript application that will run on mcac.church. It is meant to communicate with a Rails server that mounts Basechurch @ /api/.

Prerequisites

You will need the following things properly installed on your computer.

If you need help installing these prerequisites on Ubuntu, see the Getting Started guide.

Installation

  • git clone [email protected]:openmcac/mcac-js this repository
  • change into the new directory
  • npm install
  • bower install
  • npm install -g ember-cli
  • npm install -g phantomjs

Running / Development

Code Generators

Make use of the many generators for code, try ember help generate for more details

Running Tests

  • ember test
  • ember test --server

Building

  • ember build (development)
  • ember build --environment production (production)

Deploying

TODO

Further Reading / Useful Links

mcac-js's People

Contributors

achan avatar chanc007200 avatar ember-tomster avatar jyolewis avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mcac-js's Issues

Improve group routes

Currently group routes are accessed via group id like so: /groups/:group_id... but this makes for ugly urls like /groups/1 and /groups/2. They're not descriptive and they do not give you a good idea of which group you're trying to access.

Instead, we want groups' urls to be referenced by their slug like so: /group_:slug and would result in urls like /english-service and /bethanies.

Add form to add announcements to a new bulletin

announcements-add

  • Add route to create announcements for new bulletins at /:group-slug/bulletins/new/announcements
  • Add link to new bulletin form to link to announcements form
  • Add back button to bring user back to bulletin form
  • #21 Create component to render a draggable announcement: {{announcement-editor}}
  • Render a list of {{announcement-editor}} for every announcement in bulletin.announcements

Set the default publishedAt date to the upcoming Sunday

When going to /groups/1/bulletins/new, the default value for publishedAt should be the upcoming Sunday.

Tests

  • If going to the page on a Monday, it will default the publishedAt to the following Monday.
  • If going to the page on a Sunday, it will default the publishedAt to the next Sunday.

High fidelity mockups for bulletins

Let's try to get some detailed designs for these two screens:

bulletins-show-desktop

bulletins-show-mobile

Things to consider:

  • What should be our color scheme? My initial proposal would be purple and white... similar to Yahoo... but I'm open for other ideas. The direction I want to go is have a minimalistic design with a white background. The highlight color can be whatever you want... but let's have a couple of options that the team can choose from.
  • What fonts should we use? How many different fonts and font sizes do we need? I'd suggest doing some research on Google to figure out the right balance.
  • For desktop, keep your design within a 12 column, 960px grid. For more information, take a look at http://960.gs, there are photoshop templates that can give you some grid overlays.

As for the timeline, take your time. This is a big task that will take a while... just try to give us updates and prepare a little screenshot of your progress for each status meeting.

cc: @atsiang @chohinlo

If you have any questions, you can email me directly or add a comment to this issue.

Format the bulletin service order

When going to /sunday to view this Sunday's bulletin, convert the markdown into JavaScript.

Consider using a computed property (ie. displayServiceOrder) in the bulletin model if it's not too sluggish when creating/updating bulletins (/sunday-service/bulletins/new).

When rendering the bulletin on /sunday just render the computed property.

On second thought, we probably want to create a markdown component to render markdown for us.

No need to apply any additional styling just yet.

Requires #14 to be merged.

Show Sermon editor when creating a new bulletin

Currently, the Sermon editor is only displayed when editing a bulletin. We should show it even when the bulletin is being created.

  • Update mirage endpoints to log in and create bulletins
  • Update bulletin form to always show sermon editor
  • Update sermon editor to save sermon after bulletin is created

Allow users to post to a group

Interact with a JSONAPI-compliant endpoint at /api/v1/posts.

Manage posts

  • Create a post
    • /:group_slug/posts/new
  • Edit an existing post
    • /:group_slug/posts/:post_id/edit
  • View an existing post
    • /:group_slug/:post_id/:post_slug
  • Delete an existing post
  • List the posts in a group
    • /:group_slug/posts

Create component to render a draggable announcement

Create a reusable component to render announcement elements that can be edited and reordered.

announcements-editor

announcements-editor-write

Breakdown of tasks:

  • create a component called {{announcement-editor}}
  • make it a draggable li element
  • add button to add an {{announcement-editor}} below the current one
  • clicking on the text will turn the div into a textarea with buttons to
    • Save
    • Cancel
    • Delete

Add password strength widget

Let's find an appropriate library / widget to show a password's strength and only allow the user to change their password if the new password is strong.

Redirect root route to /sunday

Currently, when you hit / all you see is an empty page.

In our first release, the only public page that we'll have available is the bulletin (/sunday). Update the routes so that going to / will redirect the user (and change the URL) to /sunday.

  • Redirect / to /sunday
  • Create an integration test (in tests/integrations directory) to verify that visiting / redirects to /sunday

Useful resources:

Install Google Analytics

Most likely need to install it in index.html so that it is automatically tracking every page.

Sign up for any Google Analytics account and confirm that you can get it tracking on your personal account. After that, just replace the account IDs with XXX's and we'll put the actual one in when we have one.

Group Home Page

A group's index action will be their home page and should display:

  • Group banner
  • Profile picture
  • Group name
  • Short description
  • Target audience
  • Typical meetup time
  • Posts

Sermon tagging

Add the ability to tag sermons with a set of keywords.

Examples: humility, sharing, faith, suffering

You should be able to filter sermons by tags.

Groups

List Groups

  • Access group list at /groups
  • Add links to
    • create new group
    • show current group
    • edit current group

Create Group

  • Access new group form at /groups/new
  • Form fields
    • Banner uploader
    • Name
    • Slug
    • About

Associate speakers to sermons

The new backend will give sermons a many-to-many relationship with speakers.

  • Create a new selector for speakers
  • Create the speaker if it doesn't already exist
  • Use existing speaker
  • Associate speaker to sermon

Refactor markdown-textarea component into ember-cli addon

Read: http://www.ember-cli.com/#developing-addons-and-blueprints

Convert the markdown-textarea component created in #10 into a dedicated ember-cli addon so that other people can reuse/import the component in their projects.

Try to keep the code design consistent with https://github.com/plusacht/ember-bootstrap-datetimepicker.

  • create new addon in new git repository ember-cli-bootstrap-markdown
  • rename the component to bs-markdown-textarea
  • remove old markdown-textarea component from mcac-js
  • import new ember-cli-bootstrap-markdown into build via ember-cli

Gather information for Groups / Fellowships

Let's gather information for the page we create to introduce the various fellowships at our church.

  • Timothy Fellowship
  • Bethany Fellowship
  • AE Central
  • AE South
  • AE ?
  • Jacob Fellowship

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.