npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fathomtech/lingualist-dynamo-utils

v0.1.5

Published

This project contains the DynamoDB arterfacts used by Fathom lingualist

Downloads

5

Readme

Lingualist Dynamo DB Artefacts

This project contains a library to access the DynamoDB database used by Fathom's Translations Manager, Lingualist. The project also contains infrastructure as code (terraform) to create various AWS dynanmodb artefacts used in the project. The principles of Single Table Design are used in this project.

Features Outline

This section outlines the initial product outline and features.

  • Project - The product works with the concept of projects. The initial implementation will allow all users to have full access to all projects. Projects often correspond to a particular product and each project is entirely distinct.

    • Settings - The project settings will support the following features:-
      • Selection of the langages to be used in this project
      • Selection of a primary language - other languages will be translations of the primary for machine translation purposes
      • Creation of translation groups
  • Group - Groups are used to make it easier to manage translations and to make it easier to re-use a translation in multiple places in a product. Translations can be included in multiple groups (e.g. "Client App", "Admin App").

  • Translation - A translation will consist of a translation key and Unicode translations for each language enabled for the project.

    • Machine translation will be supported as an option - clicking an auto-translate button will result in a cloud service (e.g. AWS) being called to provide a machine translation from the primary language to the chosen language.
    • Manual translations can overwrite the machine translation
    • overwriting manual translations with auto-translations will ask for confirmation
  • Translation File Generation - The product store for the translations will be in the cloud. Translation files for use by product will be generated on request. The generated files will be in JSON format, suitable for use with products like i18n. There will be one file created projectgroup and they will be zipped for download.

Table Design

AWS's DynamoDB service is used as the data store for this project. The principles of Single Table Design are used.

Entity Relationships

erDiagram
    Users ||--o{ Projects : owns
    Projects ||--o{ Groups : contains
    Groups ||--|{ Translations : contains
    Translations }|..|{ Language : uses

Entity Chart

| Entity | PK | SK | ---------------- | --------------------------- | ---------------------------- | User | USER#<UserId> | USER#<UserId> | Project | USER#<UserId> | PROJ#<ProjName> | Group | N/A | Translation | PROJ#<UserId>#<ProjId> | TRKEY#<TranslationKey> | Language |

NB - Groups will be represented as attribute (List) in both Project and Translation. Project will include all possible group names for that project. Translation will include the group names that use that particular translation.

Additional Attributes

| Entity | Type | DefaultProject | DefaultProjectId | ----------- | ------- | -------------- | ---------------- | User | user | <ProjName> | <ProjId>

| Entity | Type | ProjectId | | ----------- | ------- | -------------- | | Project | proj | <ProjId> |

| Entity | Type | trkey | <langId> | ..... | <langId> | | ----------- | ------- | ---------------- | ---------- | ----- | ---------- | | Translation | trans | <TranslationKey> | <Lang Str> | | <Lang Str> |

Access Patterns

User Basics

  • Get / Create User
  • Edit User Settings

Project Basics

  • Get / Create Project
  • Edit Project Settings

Translation Basics

  • Create Translation
  • Get Project Translations (Will include project meta data at start)