GithubHelp home page GithubHelp logo

Theme Structure

  • primary functions are stored in functions.php
  • secondary/plug-in functions are stored in /includes
  • recurring UI elements are stored as unique php files in /modules
  • css is broken down into separate files that correspond to php files
  • php files named by wp page/template type or module/element type with -- modifiers
  • ACF organized into groups by corresponding post type, page template, or global group, with post type or page template name as prefix

PHP style guidelines

Continuous Integration and Deployment (CI/CD)

This project follows a structured Continuous Integration and Continuous Deployment (CI/CD) process, utilizing four primary environments to ensure seamless development, testing, and production deployment.

Environments

  1. Feature:

    • Used for developing and testing new features in isolated branches.
    • Feature branches should be regularly pushed to GitHub for visibility and collaboration.
  2. Main:

    • Serves as the integration branch where feature branches are merged.
    • Ensures that features are tested and stable before further deployment.
  3. Staging:

    • URL: staging.wikitongues.org
    • A live testing environment where integrated features from main are deployed.
    • Used for end-to-end testing in a production-like setting before going live.
  4. Production:

    • URL: wikitongues.org
    • The public-facing environment where fully tested and approved features are deployed.
    • Direct pushes to production are prohibited to maintain stability.

Workflow

  1. Feature Development:

    • Begin by branching off from main to develop new features.
    • Regularly push updates to the feature branch on GitHub for peer review and testing.
  2. Integration:

    • Once a feature is ready, submit a pull request to merge the feature branch into main.
    • Resolve any conflicts, run tests, and ensure the integration is smooth.
  3. Staging Deployment:

    • After merging into main, create a pull request to merge main into staging.
    • Automatic deployment to the Staging environment allows for live testing.
    • Conduct thorough testing and verification in the Staging environment.
  4. Production Deployment:

    • Following successful testing in Staging, create a pull request to merge staging into production.
    • The merge triggers an automatic deployment to the Production environment.
    • Monitor the deployment to ensure stability and functionality.

Automatic Deployment

  • Deployment Branches:

    • staging: Automatically deploys to the Staging environment upon merge.
    • production: Automatically deploys to the Production environment upon merge.
  • Branch Protection:

    • The main and production branches are protected and can only be modified via pull requests from other branches.
    • This ensures that all changes are reviewed, tested, and approved before affecting live environments.

CSS and Compiling Stylus

This project uses Stylus, a CSS pre-processor. Stylus needs to be compiled into CSS before it is usable in HTML. To run the compiler, run stylus -w stylus in the terminal.

Plugins

Typeahead Search This project uses a React search component maintained in a separate repository. To update the component in this wordpress project, you'll have to update the /build/ directory from the component into the plugin directory here. This applies separately for integration, staging and production environments. Consider using rsync to facilitate the distribution. Additionally, the plugin has a PHP file that is not currently tracked on Git due to this repository being only a subset of the full installation. We may want to change this later.

To-Do

Code structure and styles

  • [] later - simplify if statement syntax ( a ? b : c); e.g. wp_nav_menu( array( 'theme_location' => is_user_logged_in() ? 'logged-in-menu' : 'logged-out-menu' ) );
  • [] clean up template/modules hierarchy on video single and language single
  • [] convert jquery to vanilla javascript

global

  • [] bug on search page title - title has first matching language iso (Wikitongues | niv) despite being search route (?s=russian).
  • [] track entire wordpress instance in git to capture plugin-specific (typeahead) changes
  • [] add alert banner and display only if user hasn't visited the site in a week
  • [] build captions post type
  • [] build single page template for partners post type
  • [] add: "about" drop down to header (footer only for launch)
  • [] backwards compatibility evaluation
  • [] ADA accessibility evaluation
  • [] blog integration
  • [] browser notifications opt-in

home

  • [] make homepage banner a carousel
  • [] make testimonial carousel a true carousel

search results

  • [] sort results by language first, then video, then lexicons, then resources - or, alternatively, divide results into sections with language videos, language pages, etc - to make it easier on the eyes

team member post type

  • [] add: historical interns, other secondary team data

languages single

  • [] inlcude more clarity for external resources
  • [] related languages carousel
  • [] add continent of origin

video single

  • [] toggle metadata view for for more than 1 language
  • [] toggle all metadata view on mobile
  • [] once captions post type is live, add download feature
  • [] figure out navigation path from single videos back to the language in question
  • [] figure out embeds for Dropbox files (not on YouTube)
  • [] related videos carousel

archive

  • [] language collection pages - probably page templates with customized for-loops baased on ACF fields (need to define what we want to sort by)

fellows single

  • [] micro-blogging feature
  • [] other fellows carousel

revitalization toolkit

  • [] toolkit newsletter propt
  • [] toolkit language prompt
  • [] toolkit donate prompt

Wikitongues's Projects

airtable-updater icon airtable-updater

A Wordpress plugin that automates updating the Wikitongues website (or any Wordpress website) from Airtable.

poly icon poly

Open source, modern software to share and learn every language in the world.

poly-data icon poly-data

Sample JSON data exported from Poly PSQL db

utilities icon utilities

A collection of scripts to help run Wikitongues

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.