{"id":18062322,"url":"https://github.com/gflohr/lingua-poly","last_synced_at":"2025-04-11T15:04:31.164Z","repository":{"id":38736033,"uuid":"148812255","full_name":"gflohr/Lingua-Poly","owner":"gflohr","description":"Lingua-Poly is a system for disassembling natural languages.","archived":false,"fork":false,"pushed_at":"2023-07-11T01:02:42.000Z","size":1652,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-25T11:11:23.466Z","etag":null,"topics":["finnish","finnish-language-analysis","language","language-processing","linguistics","perl"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gflohr.png","metadata":{"files":{"readme":"README.asciidoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-14T16:03:41.000Z","updated_at":"2022-02-18T12:19:30.000Z","dependencies_parsed_at":"2023-02-05T02:16:00.083Z","dependency_job_id":null,"html_url":"https://github.com/gflohr/Lingua-Poly","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gflohr%2FLingua-Poly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gflohr%2FLingua-Poly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gflohr%2FLingua-Poly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gflohr%2FLingua-Poly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gflohr","download_url":"https://codeload.github.com/gflohr/Lingua-Poly/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248429062,"owners_count":21101780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finnish","finnish-language-analysis","language","language-processing","linguistics","perl"],"created_at":"2024-10-31T05:06:36.928Z","updated_at":"2025-04-11T15:04:31.140Z","avatar_url":"https://github.com/gflohr.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":":idprefix:\n:idseparator: -\n:sectanchors:\n:sectlinks:\n:sectnumlevels: 4\n:sectnums:\n:toc: macro\n:toclevels: 4\n:toc-title:\n\n[[lingua-poly]]\n= Lingua-Poly\n\nLingua-Poly is a system for disassembling human languages.\n\ntoc::[]\n\n[[status]]\n== Status\n\nPre-alpha, incomplete.  This documentation is mostly for the author at the time\nof this writing.\n\nThe first language being implemented is Finnish. Currently, the present\ntense indicative active of Finnish verbs is being implemented.\n\n[[prerequisites]]\n== Prerequisites\n\n=== Node.js\n\nhttps://nodejs.org/[Node.js] is required in order to build or run the front-end.\n\n=== Yarn or NPM\n\nYou will also need https://yarnpkg.com/[Yarn].\n\nhttps://www.npmjs.com[NPM] should work as well.\n\n=== Perl\n\nYou need https://www.perl.org/[Perl] in order to run the backend.\n\nInstall the required Perl modules with 'cpanm':\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ cd perl\n$ cpanm --installdeps .\n$ cpanm -n .\n----\n\nIf your current user does not have write permissions for the Perl module\ndirectory, you have to run `cpanm` with `sudo`:\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ cd apis/users\n$ sudo cpanm --installdeps .\n$ sudo cpanm -n .\n----\n\nOne of the indirect dependencies is `Authen::Passphrase::Scrypt` which may\nbe difficult to compile.  You have to make sure that `libcrypto` from the\nOpenSSL package is installed, and you may have to pass the directories,\nwhere the library file `libcrypto.a` and the header `openssl/aes.h` are\nfound.\n\nFor example on Mac OS X with Mac ports you probably have to do something like:\n\n[source,bash]\n----\n$ LDFLAGS=\"-L/opt/local/lib -lcrypto\" CFLAGS=\"-I/opt/local/include\" cpanm --installdeps .\n----\n\nYour mileage may vary.\n\n[[getting-started]]\n== Getting Started\n\n[[backend]]\n=== Backend\n\nA regular backend (API) server is started like this:\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ cd apis/users\n$ perl -Ilib script/lingua-poly-service-users daemon\n----\n\nIf you have the web server `morby` in your `$PATH` (should be installed as a\ndependency), you can also start a development web server that watches for\nchanges and restarts itself:\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ cd apis/users\n$ morbo script/lingua-poly-service-users\n----\n\nEnvironment variables:\n\nLINGUA_POLY_USERS_DEBUG::\nA list of debugging realms separated by commas, spaces, tabs, colons, or\npipe symbols. The following realms are currently supported:\n  core::: the core API framework\n  session::: session handling and controller methods\n  db::: database-related stuff\n  request::: set a debugger breakpoint at the beginning of the request handler\n  all::: all of the above\n\n[[configuration]]\n==== Configuration\n\nYou need a minimal configuration file `lingua-poly-service-users.api.yaml` in\nhttp://yaml.org/[YAML] format in the `apis/users` directory:\n\n[source,yaml]\n----\ndatabase:\n  dbname: linguapoly\n  user: nobody\nsecrets:\n- SLJao2rSz6GGpWBXcovAVQJfvBFch3kC7AE8QdCeIlt\n----\n\nMake sure that the configured database user has sufficient privileges to\nread and write all tables in the database.\n\nInstead of \"inventing\" a secret, you are advised just omit it initially.  The\nserver application will fail in that case and a randomly generated secret will\nbe shown in the error message.\n\n[[starting-a-mail-server]]\n==== Starting a Mail Server\n\nIn development mode, you do not need a real mail server but can start a fake\none:\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ yarn run maildev\n----\n\nThis will start maildev, a development smtp server on your local machine\nrunning on port 1025.  This mail server will not deliver any mail but will put\nthem all into one single mailbox that you can access under\nhttp://localhost:1080.\n\n[[manually-create-passwords]]\n==== Manually Create Passwords\n\n*TODO!* This is outdated.\n\nYou can manually create a password (digest) with this one-liner:\n\n[source,bash]\n----\n$ perl -Iperl/lib -MLingua::Poly::Util::System -e \"print Lingua::Poly::Util::System::crypt_password('admin')\"\n{ARGON2}$argon2id$v=19$m=32768,t=12,p=1$MTM1QzRDNkEtMDUzOS0xMUVBLUI0NjItM0ZCMDQyNjU0QTBB$tir07b6/y+fWwkvJe9Cw3A\n----\n\nReplace \"admin\" with a cleartext password.\n\nYou can assign this password to `user@example.com` like this:\n\n[source,bash]\n----\n$ echo \"UPDATE users SET password = '{SHA512}c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec=' WHERE email = 'user@example.com'\n----\n\nReplace \"user@example.com\" with the user's login, and the part beginning\nwith `{SHA512}` with the output of the above one-liner.\n\n[[frontend]]\n== Frontend\n\n=== Static Distribution\n\nBuild the frontend like this:\n\n[source,bash]\n----\n$ cd /path/to/Lingua-Poly\n$ yarn run build\nyarn run v1.3.2\n$ ng build\n                                                                              u Date: 2018-09-15T08:18:32.873Z\nHash: ad5d2f974c866b850a32\nTime: 5189ms\nchunk {main} main.js, main.js.map (main) 9.38 kB [initial] [rendered]\nchunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 227 kB [initial] [rendered]\nchunk {runtime} runtime.js, runtime.js.map (runtime) 5.22 kB [entry] [rendered]\nchunk {styles} styles.js, styles.js.map (styles) 15.6 kB [initial] [rendered]\nchunk {vendor} vendor.js, vendor.js.map (vendor) 2.94 MB [initial] [rendered]\n✨  Done in 9.21s.\n----\n\nThis will create a directory named 'dist/Lingua-Poly' with all frontend files.\nMove the contents of this directory into the document root of your web server\nor ...\n\n=== Run Development Version\n\nAlternatively you can run the application with a built-in web server:\n\n[source,bash]\n----\n$ cd /path/to/Poly-Lingua\n$ yarn start\nyarn run v1.3.2\n$ ng serve --open\n** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **\n...\n----\n\nThe application is then available at http://localhost:4200/.\n\nYou have to tell the development web server the URI of the backend API\nserver. The default provided in the file `proxy.conf.json` should actually just\nwork if you follow the instructions.\n\n[[copyright]]\n== Copyright\n\nCopyright (C) 2018-2019 Guido Flohr guido.flohr@cantanea.com, all rights\nreserved.\n\nThis library is free software. It comes without any warranty, to the\nextent permitted by applicable law. You can redistribute it and/or\nmodify it under the terms of the Do What the Fuck You Want to Public\nLicense, Version 2, as published by Sam Hocevar. See\nhttp://www.wtfpl.net/ for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgflohr%2Flingua-poly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgflohr%2Flingua-poly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgflohr%2Flingua-poly/lists"}