Skip to content
This repository has been archived by the owner on Feb 16, 2023. It is now read-only.

villetakanen/pelilauta

Repository files navigation

Pelilauta

Quality Gate Status

Elven wizard casts a resurrection: pelilauta.web.app

An Open Source vue3+firebase project for a community site.

Goals

  1. Provide a web-forum like UX for desktop
  2. Provide a social-media-stream like UX for mobile, without compromising (1)
  3. Provide GDPR tools for Personal data removal
  4. Provide basic tools for community moderation
  5. Super simple to use

How you can help.

  1. Use the App
  2. Read the code
  3. Log issues to the github tracker of this repo
  4. Ask Ville for access, and start peer reviewing or writing code :P
  5. Ask Ville for access, and start helping with Firebase devops tasks o_O
  6. Use the App.

Breaking, and other major changes

9.4.0 - and above

  • Some nice to have features expect additional cloud side triggers from pelilauta-functions-2, but the app will work without the new functions without any issues.

9.0.0

  • Requires Pelilauta-functions 0.2.0 for inbox functionality. Breaks authz structure for 8.x and below.

8.0.0

  • Support for multiple stream post types. Breaks compatibility with "thread-only" post type model of pre 8.0.
  • No migration needed, as we simply add new stream post types to database.

7.7.0 - and above

7.0.0.

  • Supports email-link auth. No longer supports multiple SSO providers for multiple acccounts with the same email.

6.0.0

  • No longer compatible with skald 2.x site members model, requires a migration update for owners/members to firebase data structures

Project setup

Prequisites

Since 4.0.0, you need to have:

  1. A Firebase project
  2. An Algolia index
  3. A clone of pelilauta-functions

Install

npm install

Create a file called env.local and add following data from the Firebase app

VUE_APP_FIREBASE_API_KEY = 
VUE_APP_FIREBASE_AUTH_DOMAIN =  
VUE_APP_FIREBASE_DATABASE_URL = 
VUE_APP_FIREBASE_PROJECT_ID  = 
VUE_APP_FIREBASE_STORAGE_BUCKET  = 
VUE_APP_FIREBASE_MESSAGING_SENDER_ID =
VUE_APP_FIREBASE_APP_ID =
VUE_APP_FIREBASE_MEASUREMENT_ID = 
VUE_APP_ALGOLIA_APP_ID = 
VUE_APP_ALGOLIA_APP_SEARCH_KEY = 

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Lints and fixes files

npm run lint

Release a new version (from CLI)

npm run release && npm run build && firebase deploy
git push --follow-tags origin master

Run end-to-end tests

You need to add a cypress.env.json file to project root with username and password to test the features that require login.

Example of the cypress.env.json file

{
  "TEST_USER_EMAIL": "an.email@address.com",
  "TEST_USER_PASSWORD": "theP4ssw0rd"
}

To run the tests

npm run test:e2e

License etc

Code MIT 2.0 -> See LICENSE file

Assets/Images: licenced separately

We use

Flag icons from https://github.com/HatScripts/circle-flags