All Projects β†’ voluntarily β†’ vly1

voluntarily / vly1

Licence: MPL-2.0 License
v1 Voluntarily application - deprecated

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to vly1

Sagefy
πŸ”­ Learn anything, adapted for you. Free.
Stars: ✭ 80 (+471.43%)
Mutual labels:  education, open, educational
Comcast.github.io
The main Open Source portal for Comcast
Stars: ✭ 36 (+157.14%)
Mutual labels:  opensource, open, source
data-vis-labs-2018
Principles & Practice of Data Visualization, CS631 Spring 2018
Stars: ✭ 34 (+142.86%)
Mutual labels:  education, teaching
resources
БСсплатный ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, созданный ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π½Π½Ρ‹ΠΉ профСссионалами
Stars: ✭ 20 (+42.86%)
Mutual labels:  education, educational
teaching-app-dev-swift-archive
DEPRECATED. Teaching App Development with Swift materials, bundled up as a single archive.
Stars: ✭ 14 (+0%)
Mutual labels:  education, teaching
full-teaching
A web application to make teaching online easy. WARNING: the updated version of this repo is now in the link below
Stars: ✭ 34 (+142.86%)
Mutual labels:  teachers, teaching
Open-Mam
Open Source Mobile Application Management (WORK IN PROGRESS)
Stars: ✭ 28 (+100%)
Mutual labels:  open, source
Spyware
Python-based spyware for Windows that logs the foreground window activites, keyboard inputs. Furthermore it is able to take screenshots and and run shell commands in the background.
Stars: ✭ 31 (+121.43%)
Mutual labels:  education, educational
Mat-O-Wahl
πŸ‡©πŸ‡ͺ Mat-O-Wahl - Ein einfach zu bedienender, freier Open Source Wahl-O-Mat Klon fuer jedermann ### πŸ‡¬πŸ‡§ πŸ‡ΊπŸ‡Έ A simple to handle, free "Voting Advice Application" / "Electoral Compass" alternative
Stars: ✭ 27 (+92.86%)
Mutual labels:  open, source
CoronaTracker
A full stack framework to trace possible close-contact candidates within last specified days for an already detected covid-19 positive patient
Stars: ✭ 13 (-7.14%)
Mutual labels:  opensource, volunteering
data-science-training
Reproducible data science with R, RStudio, Git, and GitHub
Stars: ✭ 18 (+28.57%)
Mutual labels:  education, teaching
bash-course
Material for the advanced bash scripting course at Heidelberg University
Stars: ✭ 35 (+150%)
Mutual labels:  education, teaching
NoPMsBot
https://telegram.dog/ShriMADhaBot
Stars: ✭ 127 (+807.14%)
Mutual labels:  open, source
match4healthcare
Helping hospitals find qualified medicine students (Hackathon #wirvsvirus). A more flexibel version is currently in development under match4everyone/match4everything,
Stars: ✭ 16 (+14.29%)
Mutual labels:  volunteer-management, volunteers
training-center.github.io
Site do Centro de Treinamento
Stars: ✭ 104 (+642.86%)
Mutual labels:  teachers, education
GitHubSpanishRankingGenerator
Scripts to build the GitHub Spanish rankings (users most active in each province sorted by public contributions) πŸ‡ͺπŸ‡Έ
Stars: ✭ 19 (+35.71%)
Mutual labels:  open, source
Phaser3.Boilerplate
Phaser 3 Boilerplate project for rapid development.
Stars: ✭ 15 (+7.14%)
Mutual labels:  open, source
ScPoEconometrics
Undergraduate textbook for Econometrics with R
Stars: ✭ 100 (+614.29%)
Mutual labels:  teachers, teaching
Freecodecamp
freeCodeCamp.org's open-source codebase and curriculum. Learn to code for free.
Stars: ✭ 339,510 (+2424971.43%)
Mutual labels:  teachers, education
opensource
Collection of Open Source packages by Otherwise
Stars: ✭ 21 (+50%)
Mutual labels:  open, source

vly1

Join the chat at https://gitter.im/voluntarily/vly1 License: MPL 2.0

Support education and innovation in New Zealand Schools with industry experts and volunteers in the classrooms

I want to join the Voluntari.ly community

You don't need permission to help - its open.

This is an open source project and you are welcome to contribute at any level you feel comfortable. Find out more about the project at the Website and then...

  1. Say hi or ask questions in the gitter chat room above
  2. email [email protected] to tell us about yourself
  3. Start Reading documentation
  4. Build the code - below
  5. Add yourself to the CONTRIBUTORS file, check it in and send us a pull request - see this ticket VP-82
  6. Come along to a Drop in Wednesday Afternoon or after work social at our Auckland office
  7. Come along to one of our developer events - see http://voluntari.ly for the latest details.

Just let me build it

Voluntari.ly is based on the MERN (MongoDB, Express, React+Redux, Node) software stack and everything should work out of the box. There are two choices:

  1. install NodeJS and MongoDB and run locally.
  2. install Docker and run in a container.

Install NodeJS and MongoDB and run locally.

Prerequisites

You will need:

  • git You may already have it. Verify with git --version

  • nodejs. Verify this with node -v which should return a current version. e.g. v11.12.0

You will also need to be connected to the Internet and be prepared for some downloads. (sometimes corporate firewalls make this difficult - go get a coffee and use theirs.)

  • MongoDB or setup a free account in the cloud - but if you do this you will need to change the MONGO_URL=mongodb://localhost:27017/vly-test connection string in your environment or in package.json to point at your cloud URL.

For mac users brew install mongodb should be all you need to do.

  • start the mongodb service

mongod

Get the Voluntari.ly source code

git clone https://github.com/voluntarily/vly1.git
cd vly1
npm install

npm install may take several minutes as it pulls in all the dependent packages.

Available Commands

  1. npm start - starts the development server with hot reloading enabled

  2. npm run bs - bundles the code and starts the production server

  3. npm run test - start the test runner

  4. npm run watch:test - start the test runner with watch mode

  5. npm run cover - generates test coverage report

  6. npm run lint - runs linter to check for lint errors

When you run npm start it will take a couple of minutes to start up and there's a pause when nothing seems to be happening - be patient, webpack and babel are processing all the files. Once you see the message "Voluntari.ly is running on port: 8000! Be Awesome!" then you can open your browser at http://localhost:8000.

If you see the message "Please make sure Mongodb is installed and running!" then go back and start mongod.

Press control+C to exit the node application.

Install Docker and run in a container.

You can use this option if you quickly want to see what the application looks like.

You will need:

Get the source code

git clone https://github.com/voluntarily/vly1.git
cd vly1
npm install

Start the Containers

docker-compose up -d --build

Note this may take a few minutes the first time you run it as it will download some images. Also once the command returns the services are still starting up so it will be a minute before you can visit the webpage.

You are in.

You will now be able to see the voluntari.ly application (if not then ask for help on our gitter channel.

Stopping

To halt the containers run:

docker-compose down 

More information at Using Docker and Docker Compose

File Structure

Webpack Configs

MERN uses Webpack for bundling modules. There are four types of Webpack configs provided webpack.config.dev.js (for development), webpack.config.prod.js (for production), webpack.config.server.js (for bundling server in production) and webpack.config.babel.js (for babel-plugin-webpack-loaders for server rendering of assets included through webpack).

The Webpack configuration is minimal and beginner-friendly. You can customise and add more features to it for production build.

Server

MERN uses express web framework. Our app sits in server.js where we check for NODE_ENV.

If NODE_ENV is development, we apply Webpack middlewares for bundling and Hot Module Replacement.

Server Side Rendering

We use React Router's match function for handling all page requests so that browser history works.

All the routes are defined in client/routes.js. React Router renders components according to route requested.

// Server Side Rendering based on routes matched by React-router.
app.use((req, res) => {
    match({
        routes,
        location: req.url
    }, (err, redirectLocation, renderProps) => {
        if (err) {
            return res.status(500).end('Internal server error');
        }

        if (!renderProps) {
            return res.status(404).end('Not found!');
        }

        const initialState = {
            posts: [],
            post: {}
        };

        const store = configureStore(initialState);

        fetchComponentData(store.dispatch, renderProps.components, renderProps.params).then(() => {
            const initialView = renderToString(
                <Provider store = {store} >
                  <RouterContext {...renderProps}/>
                </Provider>
            );

            const finalState = store.getState();

            res.status(200).end(renderFullPage(initialView, finalState));
        }).catch(() => {
            res.end(renderFullPage('Error', {}));
        });
    });
});

match takes two parameters, first is an object that contains routes, location and history and second is a callback function which is called when routes have been matched to a location.

If there's an error in matching we return 500 status code, if no matches are found we return 404 status code. If a match is found then, we need to create a new Redux Store instance.

Note: A new Redux Store has populated afresh on every request.

fetchComponentData is the essential function. It takes three params: first is a dispatch function of Redux store, the second is an array of components that should be rendered in current route and third is the route params. fetchComponentData collects all the needs (need is an array of actions that are required to be dispatched before rendering the component) of components in the current route. It returns a promise when all the required actions are dispatched. We render the page and send data to the client for client-side rendering in window.__INITIAL_STATE__.

Client

Client directory contains all the shared components, routes, modules.

components

This folder contains all the common components which are used throughout the project.

index.js

Index.js simply does client side rendering using the data provided from window.__INITIAL_STATE__.

modules

Modules are the way of organising different domain-specific modules in the project. A typical module contains the following

.
└── Post
    β”œβ”€β”€ __tests__                    // all the tests for this module goes here
    |   β”œβ”€β”€ components               // Sub components of this module
    |   |   β”œβ”€β”€ Post.spec.js
    |   |   β”œβ”€β”€ PostList.spec.js
    |   |   β”œβ”€β”€ PostItem.spec.js
    |   |   └── PostImage.spec.js
    |   β”œβ”€β”€ pages
    |   |   β”œβ”€β”€ PostPage.spec.js
    |   |   └── PostViewPage.spec.js
    |   β”œβ”€β”€ PostReducer.spec.js
    |   └── PostActions.spec.js
    β”œβ”€β”€ components                   // Sub components of this module
    |   β”œβ”€β”€ Post.js
    |   β”œβ”€β”€ PostList.js
    |   β”œβ”€β”€ PostItem.js
    |   └── PostImage.js
    β”œβ”€β”€ pages                        // React Router Pages from this module
    |   β”œβ”€β”€ PostPage
    |   |   β”œβ”€β”€ PostPage.js
    |   |   └── PostPage.css
    |   └── PostViewPage
    |       β”œβ”€β”€ PostViewPage.js
    |       └── PostViewPage.css
    β”œβ”€β”€ PostReducer.js
    └── PostActions.js

Misc

Importing Assets

Assets can be kept where you want and can be imported into your js files or css files. Those fill be served by webpack in development mode and copied to the dist folder during production.

ES6 support

We use babel to transpile code in both server and client with stage-0 plugin. So, you can use both ES6 and experimental ES7 features.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].