Skip to content

A collection of models as classes to represent ICAO 9303 Machine-Readable Travel Documents and example renderers to create furry-themed travel documents.

Notifications You must be signed in to change notification settings

sentamalin/alfa-id-generator

Repository files navigation

Furry identification generators

A collection of models as classes to represent ICAO 9303 Machine-Readable Travel Documents (MRTDs) and example renderers to create furry-themed MRTDs.

REUSE status

Demos

Air Line Furries Association, International, provides generators to create furry-themed travel documents to save as an image or print:

Provided classes

Four kinds of classes are available for your use, modification, and study: classes used for composition, examples of composed classes, canvas renderers, and web page controllers. Their descriptions, properties, and methods are documented in their respective files using JSDoc.

Classes used for composition

These classes are found in /lib/icao9303/ and are mainly used to compose other kinds of documents:

  • DigitalSeal - Properties common to all visible digital seals (VDS).
  • DigitalSealV3 - A digital seal conforming to VDS version 3.
  • DigitalSealV4 - A digital seal conforming to VDS version 4.
  • TravelDocument - Properties common to all travel documents.
  • VisaDocument - Properties common to all visa documents.

Composed classes

These classes are found in /lib/icao9303/ and may be used as-is or used to compose other kinds of documents:

  • MRVADocument - A class that represents a nearly full-page machine-readable visa sticker (MRV-A).
  • MRVBDocument - A class that represents a smaller machine-readable visa sticker (MRV-B) for when a clear area aside the visa is needed on a passport page.
  • TD1Document - A class that represents a machine-readable official travel document (MROTD) in the ISO/IEC 7810 TD1 size (like a credit card).
  • TD2Document - A class that represents a MROTD in the ISO/IEC 7810 TD2 size (like the Icelandic identity card before December 2023).
  • TD3Document - A class that represents a MROTD in the ISO/IEC 7810 TD3 size (like a passport booklet).

These classes are found in /lib/:

  • CrewCertificate - A class composed from TD1Document and DigitalSealV4 that represents a furry crewmember certificate in the TD1 size with a VDS.
  • CrewID - A class composed from TD1Document and DigitalSealV4 that represents a furry crewmember identification badge in the TD1 size with a VDS.
  • CrewLicense - A class composed from TD1Document and DigitalSealV4 that represents a furry crewmember license in the TD1 size with a VDS.
  • EventsMRVA - A class composed from MRVADocument and DigitalSealV4 that represents a full-page MRV-A with a VDS used for furry events.
  • EventsMRVB - A class composed from MRVBDocument and DigitalSealV4 that represents a smaller MRV-B with a VDS used for furry events.
  • EventsPassport - A class composed from TD3Document and DigitalSealV4 that represents a furry events passport booklet used to identify furries and store their visa stickers, entry stamps, and other information.

Canvas renderers

Seven renderers are provided in respective directories for the six composed classes found in /lib/:

  • CrewCertificateRenderer - Given a CrewCertificate, renders both sides of a furry crewmember certificate with full bleed.
  • CrewIDRenderer - Given a CrewID, renders both sides of a furry crewmember identification badge with full bleed.
  • CrewLicenseRenderer - Given a CrewLicense, renders both sides of a furry crewmember license with full bleed.
  • EventsMRVARenderer - Given an EventsMRVA, renders the sticker of a MRV-A furry events visa with full bleed.
  • EventsMRVBRenderer - Given an EventsMRVB, renders the sticker of a MRV-B furry events visa with full bleed.
  • EventsPassportRenderer - Given an EventsPassport, renders the machine-readable passport page and signature page of a furry events passport with full bleed.
  • EventsSealRenderer - Given an EventsMRVB, renders an MRV-B furry events visa into a small sticker containing a VDS with full bleed.

Each of these renderers take an instance of their respective class and use a canvas rendering context to render the instance as images. The images are suitable for web use or for printing at 300-dpi.

Note that renderers are scenario-specific and these renderers were designed for a web demonstration in mind. Ergo, many renderer properties are configurable. In real-world scenarios where a document's data may be filled, then digitally signed, then rendered, then printed, few or no properties may want to be configurable.

Web page controllers

For each renderer a controller is provided in respective directories to allow setting document and renderer properties when used in a web page: CrewCertificateViewModel, CrewIDViewModel, CrewLicenseViewModel, EventsMRVAViewModel, EventsMRVBViewModel, EventsPassportViewModel, and EventsSealViewModel.

Like the renderers, these were designed for a web demonstration in mind. They are not actual view models in the Model-View-ViewModel definition and while functional, they are a bit of a mess to read over. One would certainly want to write something better.

Licenses

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

The repository has a copy of the GNU General Public License and you should have received a copy of the License along with this program. If not, see https://www.gnu.org/licenses/.

Additionally, the program is REUSE-compliant and all files contain its licensing information, either directly in the file or in a .license file.

Other code used

lovasoa's base45 typescript implementation is used to encode and decode byte arrays and base-45 strings, respectively. It is released under the Apache License 2.0.

zeekay's qrcode-lite is a fork of soldair's node-qrcode and is used by the renderers to create QR codes. It is released under the MIT License.

Fonts

Matthew Hinders-Anderson's OCR-B is the font used for the Machine-Readable Zones (MRZ) and is released under the Creative Commons Attribution 4.0 International license.

The Open Sans Project Authors' Open Sans was downloaded from Google Fonts and is the font used for the Visual Inspection Zones (VIZ). It is released under the SIL Open Font License 1.1.

The Astigmatic Typographic Institute's Yellowtail was downloaded from FontSquirrel and is the font used to generate signatures from text entered in a textbox. It is released under the Apache License 2.0.

Documentation and image assets

Documentation, like this README, is released under the Creative Commons Attribution Share Alike 4.0 International license.

Fox was taken by Kent Miller and is released under the Creative Commons Zero 1.0 Universal license. The remaining image files used by this program are by Air Line Furries Association, International, and are released under the Creative Commons Attribution 4.0 International license.

index.html, index.css and index.js files

index.html, index.css and index.js files are in respective folders and used to provide a demo web page where one can change composed class and renderer properties. As they are fairly simple, they are released under the Creative Commons Zero 1.0 Universal license.

About

A collection of models as classes to represent ICAO 9303 Machine-Readable Travel Documents and example renderers to create furry-themed travel documents.

Resources

Stars

Watchers

Forks