Table of Contents

Projects:

Projects

Each project is a web app, a subdomain of voyc.com, stored in gitlab (previously github).

For Developers

layout - browser screen splitter

account - submodule, user management

fx - submodule, library of game effects

icon - submodule, library of icons

jslib - library of javascript tools

minimal - html, css, javascript for a minimal web app

Apps

voyc - aka geo, replaced by global and then by geo

global - previously voyc, before geo

samantha - AI webchat

classy - comment classifier

sandbox - experiment and demo

bahasa - language

flash - flash card memorization

guru - random quote

mai - language

plunder - game added atop voyc

sanskrit - language

robots - multiple hardware projects

vote - ranked choice voting

wordnet - database only, sql version of Princeton's WordNet

model - starter project template

timeline - timeline

projects checklist

Developer Guidelines

.gitignore

robots.txt
.well-known/*
js.min
css.min
index.php

Duplicate Content

Most of our projects have a dev and a production version.
Example:

These two sites have duplicate content.
We want to tell the search engines to index prod, not dev.
How do we do that?

option 1. robots.txt
User-agent: *
Disallow: /

This prevents the search engines from crawling the site.
But it does NOT prevent the search engines from indexing the site.

option 2. html meta
<meta name='robots' content='noindex,follow' />

This means that prod and dev will have a different line in index.html.
How can I do this dynamically? The crawlers are probably scraping the HTML without preprocessing javascript or PHP.

option 3. password

How do we do that?

option 4. temporary dev environment
  1. Note that the a2 cpanel domains page has the <meta robots noindex> tag.
  2. When starting server development, manually add the <meta robots noindex> tag.
  3. After completion, delete the worktree, and/or put up a fake page.
  4. Maybe we only need one dev subdomain?

git Structure

Five Repository Groups

location name git purpose
gitlab gitlab voyc/proj.git (bare) public git host
a2 voycgit voycgit/proj.git central git repository
a2 webprod webprod/proj/.git production web host
a2 webdev webdev/proj/.git server development
local webapps webapps/proj/.git local development

Branches

gitlab, voycgit, and webprod have a master branch only.
webdev and webapps have a master branch and also a temporary feature branch.

Remotes

voycgit has no remotes.
gitlab has no remotes.
All other repositories have remote origin pointing to voycgit.
webprod also has remote gitlab.

get remote -v
$ origin ssh://voyccom@az1-ss8.a2hosting.com:7822/home/voyccom/voycgit/jslib.git	
$ gitlab https://gitlab.com/voyc/jslib.git

Note that use the ssh protocol; never the local protocol.

voyc git Workflow

refresh the local repo and worktree
git clone ssh://voyccom@az1-ss8.a2hosting.com:7822/home/voyccom/voycgit/vote.git
git branch   # make sure you're in the master branch
git pull origin master
git submodule foreach git pull origin master
start development
git branch popup         # create a feature branch
git checkout popup
development
<make changes>
git status
git add .
git commit -m 'New popup architecture'   # version control
git push origin popup      # remote backup
pull in simultaneous development from server - ????
git switch master
git pull origin master 
git checkout popup
git rebase master               # merge modified master into popup branch, resolve conflicts here
complete development
git checkout master
git merge popup
git diff master..popup
git branch -d popup
git push origin master      # push to central
git push origin -d popup   # delete branch from central
in webprod
git pull origin master
git push gitlab master