commit c443ca91a20d6e726d1ea6fa67fb9b6f75c77183 Author: Simon Sarasova Date: Wed Apr 10 18:07:49 2024 +0000 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..942d2eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +ExportedWebsite_Server +ExportedWebsite_IPFS diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..9203f17 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,4 @@ +# Changelog + +This document attempts to describe the history of changes to the Seekia Website codebase. +Small and insignificant changes may not be included in this log. \ No newline at end of file diff --git a/Contributors.md b/Contributors.md new file mode 100644 index 0000000..a1ba0ed --- /dev/null +++ b/Contributors.md @@ -0,0 +1,7 @@ +# Contributors + +This document describes the contributors to the Seekia Website codebase. + +Name | Date Of First Commit | Number Of Commits +--- | --- | --- +Simon Sarasova | April 10, 2024 | 1 \ No newline at end of file diff --git a/License.md b/License.md new file mode 100644 index 0000000..60e72c5 --- /dev/null +++ b/License.md @@ -0,0 +1,13 @@ + +# Unlicense + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. + +In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to [unlicense.org](http://unlicense.org) + diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..8d86b5a --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,85 @@ +# Seekia + +![Seekia Banner](./readmeImages/seekiaLogoWithSubtitle.jpg) + +## Seekia Website + +![Seekia Website Homepage](./readmeImages/seekiaWebsiteHomepage.jpg) + +**This is the repository for Seekia's website.** + +*Cure racial loneliness. Beautify the human species. Seekia: Be race aware.* + +**Seekia is a race aware mate discovery network.** + +Seekia is a mate discovery network where users can find a mate while having a deep awareness of each potential partner's race. + +Users can share racial information in their profiles such as their eye, skin, and hair color; hair texture; genetic ancestry; haplogroups; and the alleles of their genes which effect physical traits. + +Seekia enables users to browse and filter potential mates by their racial attributes. Seekia can also calculate the racial characteristics for prospective offspring between users. Seekia allows for users to predict and control the race of their offspring by selecting a mate who is the most capable and likely to produce offspring of their desired race. + +Seekia aims to cure racial loneliness by helping users to find members of their own race to mate with. + +Seekia also provides users with the ability to mate in a genetics aware manner. + +Users can view information about the health and physical traits of their prospective offspring for each user. + +Seekia aims to improve the genetic quality of humanity by making humans healthier, more beautiful, and more intelligent. Seekia aims to facilitate eugenic breeding by helping to create mate pairings which are the most likely to produce healthy, beautiful, and intelligent offspring. + +Users can choose to mate with users with whom their offspring has a lower probability of having diseases and a higher probability of having certain traits. + +The goal of Seekia is to accelerate the world's adoption of race and genetics aware mate discovery technology, and to help the world mate in a race and genetics aware manner. + +### Learn More + +Access Seekia's clearnet website at [Seekia.net](https://seekia.net). + +Access Seekia's Ethereum IPFS ENS website at [Seekia.eth](ipns://seekia.eth). This site can be accessed through Brave Browser. + +Access Seekia's Tor website at [seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion](http://seekia77v2rqfp4i4flavj425txtqjpn2yldadngdr45fjitr72fakid.onion). + +Read the whitepaper at `/resources/assets/Seekia.pdf` + +## How To Build + +To create the Seekia Website, you must first install Golang. + +### Install Golang + +Golang is an open source programming language that makes it easy to build simple, reliable, and efficient software. + +Install it by following the instructions on this website: [go.dev/doc/install](https://go.dev/doc/install) + +### Build The Seekia Website + +Open a terminal and navigate inside of the SeekiaWebsite folder. + +Once there, run the following command: + +`go run main.go` + +The website will export into two folders: `ExportedWebsite_IPFS` and `ExportedWebsite_Server` + +`ExportedWebsite_IPFS` contains the website that is deployed to the `Seekia.eth` IPFS domain. + +`ExportedWebsite_Server` contains the website that is deployed to Seekia's clearnet and Tor domains. + +## Contact + +You can contact Seekia's creator and lead developer, Simon Sarasova. + +His Seekia identity hash is: `simonx5yudleks5jhwhnck5s28m` + +You can use the Seekia application to cryptographically verify Seekia memos are authored by Simon's identity hash. You can do this by downloading the Seekia app and navigating to Settings -> Tools -> Verify Memo. + +Get Simon's contact information by visiting his website at [SimonSarasova.eth](ipns://SimonSarasova.eth) + +You can use Brave browser to access a .eth IPFS website. + +You can also use an IPFS gateway service if you do not have Brave Browser. These services are operated by third parties, so you should access his website from multiple gateways to make sure you are seeing an authentic version of his website: + +[SimonSarasova.eth.limo](https://simonsarasova.eth.limo) + +[SimonSarasova.eth.link](https://simonsarasova.eth.link) + + diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f17a622 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module SeekiaWebsite + +replace SeekiaWebsite => ./ + +go 1.22 diff --git a/main.go b/main.go new file mode 100644 index 0000000..663b463 --- /dev/null +++ b/main.go @@ -0,0 +1,362 @@ + +// This package exports 2 Seekia static sites into two folders: ExportedWebsite_IPFS and ExportedWebsite_Server + +// ExportedWebsite_IPFS contains the website that is deployed to the Seekia.eth IPFS domain. +// ExportedWebsite_Server contains the website that is deployed to Seekia's clearnet (.net) and Tor (.onion) domains. + +package main + +import "SeekiaWebsite/translation" + +import "bytes" +import "errors" +import "log" +import "os" +import "strings" +import "text/template" + +import goFilepath "path/filepath" + +// This is the current Seekia release .tgz filename +const currentReleaseFilename = "Seekia-v0.50.tgz" + +// This is the IPFS base32 CID for the current Seekia release .tgz file +const currentReleaseIpfsCID = "bafybeie6nkmucrvo3i7bonmlf77dlna65tjogsq5zmrcpqke7pvdkiumhy" + +func main(){ + + //Inputs: + // -string: The folderpath to export the website to + // -bool: Use this to control if we are exporting the Seekia.eth IPFS site or not + exportWebsite := func(websiteFolderpath string, siteIsIPFS bool)error{ + + err := os.RemoveAll(websiteFolderpath) + if (err != nil){ return err } + + err = os.Mkdir(websiteFolderpath, os.ModePerm) + if (err != nil) { return err } + + //TODO: Add more languages + //allLanguageCodesList := []string{"en", "es"} + + allLanguageCodesList := []string{"en"} + + // We create the style.css file + + cssPageBytes, err := os.ReadFile("./resources/style.css") + if (err != nil) { return err } + + cssPageString := string(cssPageBytes) + + cssFilepath := goFilepath.Join(websiteFolderpath, "style.css") + + err = createFile(cssFilepath, cssPageString) + if (err != nil) { return err } + + // We copy various folders + + copyFolder := func(folderName string)error{ + + sourceFolderPath := goFilepath.Join("./resources/", folderName) + destinationFolderPath := goFilepath.Join(websiteFolderpath, folderName) + + err := copyFolderRecursively(sourceFolderPath, destinationFolderPath) + if (err != nil) { return err } + + return nil + } + + err = copyFolder("images") + if (err != nil) { return err } + + err = copyFolder("assets") + if (err != nil) { return err } + + err = copyFolder("memos") + if (err != nil) { return err } + + err = copyFolder("signatures") + if (err != nil) { return err } + + if (siteIsIPFS == false){ + + // For our IPFS site, we are using an IPFS link for the download + // For our non-IPFS site, we include the link on the same hosted site + // This is because when viewing an IPFS site, the user's browser downloads the entire website (usually?) + // This would take too long to download if we included the release with the site (several megabytes) + + releaseFilepath := goFilepath.Join("./resources", "release", currentReleaseFilename) + + releaseFileBytes, err := os.ReadFile(releaseFilepath) + if (err != nil) { + fileDoesNotExist := os.IsNotExist(err) + if (fileDoesNotExist == false){ + return err + } + + return errors.New("You must place the Seekia release .tgz file into the ./resources/release folder before exporting the website. This can be an empty file with the correct filename if you want. Error: " + err.Error()) + } + + releaseFileString := string(releaseFileBytes) + + + destinationFolderPath := goFilepath.Join(websiteFolderpath, "release") + + err = os.Mkdir(destinationFolderPath, os.ModePerm) + if (err != nil) { return err } + + destinationFilepath := goFilepath.Join(destinationFolderPath, currentReleaseFilename) + + err = createFile(destinationFilepath, releaseFileString) + if (err != nil) { return err } + } + + getTemplateDefinitionsMap := func(inputLanguageCode string)(map[string]string, error){ + + translationsMap, err := translation.GetTranslationsMap(inputLanguageCode) + if (err != nil){ return nil, err } + + templateDefinitionsMap := translationsMap + + // Now we add code snippets to the map + + fileList, err := os.ReadDir("./resources/codeSnippets") + if (err != nil) { return nil, err } + + for _, fileObject := range fileList{ + + fileName := fileObject.Name() + filePath := goFilepath.Join("./resources/codeSnippets/", fileName) + + fileBytes, err := os.ReadFile(filePath) + if (err != nil) { return nil, err } + + snippetString := string(fileBytes) + + snippetName := strings.TrimSuffix(fileName, ".html") + + codeSnippetKey := "CodeSnippet_" + snippetName + + _, exists := templateDefinitionsMap[codeSnippetKey] + if (exists == true){ + return nil, errors.New("Cannot export website: conflict found between translationsMap and codeSnippets") + } + + templateDefinitionsMap[codeSnippetKey] = snippetString + } + + // LanguageURLBase is empty for all files except /index.html + templateDefinitionsMap["LanguageURLBase"] = "" + + return templateDefinitionsMap, nil + } + + // We use this function to parse the .html files to replace the internal template values with actual values + // For example, {{.BeRaceAware}} will be replaced with "Be Race Aware", or the equivalent translated text in the website's current language version + // We have to parse twice for the web pages. + // Code snippets have fields that need to be parsed + // So to process the code snippets, we have to: + // 1. First parse the html page files to add the code snippets/replace any language fields + // 2. Then parse again to replace any language fields and instances of {{.LinkURLBase}} within the code snippets we just added + // + parseTemplateObjectToStringTwice := func(templateObject *template.Template, definitionsMap map[string]string)(string, error){ + + parseTemplateObjectToString := func(inputTemplateObject *template.Template)(string, error){ + + inputTemplateObject.Option("missingkey=error") + + parsedTemplateBuffer := new(bytes.Buffer) + + err = inputTemplateObject.Execute(parsedTemplateBuffer, definitionsMap) + if (err != nil){ return "", err } + + parsedTemplateString := parsedTemplateBuffer.String() + + return parsedTemplateString, nil + } + + parsedTemplateString_Round1, err := parseTemplateObjectToString(templateObject) + if (err != nil) { return "", err } + + templateObject2 := template.New("Round2") + _, err = templateObject2.Parse(parsedTemplateString_Round1) + if (err != nil) { return "", err } + + parsedTemplateString_Round2, err := parseTemplateObjectToString(templateObject2) + if (err != nil) { return "", err } + + return parsedTemplateString_Round2, nil + } + + { + // First we create /index.html + // Using a language code is optional for the main index of the site + // It is always in English + // For example, Seekia.eth/index.html + + templateObject, err := template.ParseFiles("./resources/pages/index.html") + if (err != nil){ return err } + + templateDefinitionsMap, err := getTemplateDefinitionsMap("en") + if (err != nil) { return err } + + templateDefinitionsMap["BaseURL"] = "." + templateDefinitionsMap["LanguageURLBase"] = "en/" + + indexPageString, err := parseTemplateObjectToStringTwice(templateObject, templateDefinitionsMap) + if (err != nil) { return err } + + indexFilepath := goFilepath.Join(websiteFolderpath, "index.html") + + err = createFile(indexFilepath, indexPageString) + if (err != nil) { return err } + } + + // Now we create the rest of the pages for each language + // These pages exist behind a language code + // For example: + // seekia.eth/en/index.html + // seekia.eth/es/download.html + + getDownloadSeekiaLink := func()string{ + + if (siteIsIPFS == false){ + result := "../release/" + currentReleaseFilename + + return result + } + + // The IPFS site does not contain the Seekia release .tgz file + // This is because users (sometimes?) download the entire IPFS site when viewing it, + // so downloading many megabytes would take too long + + result := "https://ipfs.io/ipfs/" + currentReleaseIpfsCID + + return result + } + + downloadSeekiaLink := getDownloadSeekiaLink() + + for _, languageCode := range allLanguageCodesList{ + + // We create the language subfolder + + languageSubfolderPath := goFilepath.Join(websiteFolderpath, languageCode) + + err = os.Mkdir(languageSubfolderPath, os.ModePerm) + if (err != nil) { return err } + + + templateDefinitionsMap, err := getTemplateDefinitionsMap(languageCode) + if (err != nil) { return err } + + templateDefinitionsMap["BaseURL"] = "../" + + templateDefinitionsMap["DownloadSeekiaLink"] = downloadSeekiaLink + + createPage := func(pageFilename string)error{ + + pageTemplateFilepath := goFilepath.Join("./resources/pages/", pageFilename) + + pageTemplateObject, err := template.ParseFiles(pageTemplateFilepath) + if (err != nil){ return err } + + pageString, err := parseTemplateObjectToStringTwice(pageTemplateObject, templateDefinitionsMap) + if (err != nil) { return err } + + pageFilepath := goFilepath.Join(languageSubfolderPath, pageFilename) + + err = createFile(pageFilepath, pageString) + if (err != nil) { return err } + + return nil + } + + err = createPage("index.html") + if (err != nil){ return err } + + //TODO: Add the Choose Language page and Choose Language banner bar + + // err := createPage("chooseLanguage.html") + // if (err != nil){ return err } + + err = createPage("download.html") + if (err != nil){ return err } + + err = createPage("about.html") + if (err != nil){ return err } + + err = createPage("contribute.html") + if (err != nil){ return err } + + err = createPage("archive.html") + if (err != nil){ return err } + } + + return nil + } + + err := exportWebsite("./ExportedWebsite_IPFS/", true) + if (err != nil){ + log.Println(err) + return + } + + err = exportWebsite("./ExportedWebsite_Server/", false) + if (err != nil){ + log.Println(err) + return + } + + log.Println("Seekia's websites have been exported!") +} + + + +// This function will copy a folder and its subfolders +func copyFolderRecursively(sourceFolderPath string, destinationFolderPath string)error{ + + err := os.Mkdir(destinationFolderPath, os.ModePerm) + if (err != nil) { return err } + + filesystemPathsList, err := os.ReadDir(sourceFolderPath) + if (err != nil) { return err } + + for _, filesystemObject := range filesystemPathsList{ + + pathName := filesystemObject.Name() + + sourcePathName := goFilepath.Join(sourceFolderPath, pathName) + destinationPathName := goFilepath.Join(destinationFolderPath, pathName) + + isDirectory := filesystemObject.IsDir() + if (isDirectory == true){ + + err := copyFolderRecursively(sourcePathName, destinationPathName) + if (err != nil) { return err } + + } else { + + fileBytes, err := os.ReadFile(sourcePathName) + if (err != nil) { return err } + + fileString := string(fileBytes) + + err = createFile(destinationPathName, fileString) + if (err != nil) { return err } + } + } + + return nil +} + +func createFile(filePath string, fileContents string)error{ + + newFile, err := os.Create(filePath) + _, err = newFile.WriteString(fileContents) + if (err != nil) { return err } + newFile.Close() + + return nil +} + diff --git a/readmeImages/seekiaLogoWithSubtitle.jpg b/readmeImages/seekiaLogoWithSubtitle.jpg new file mode 100644 index 0000000..53b2f33 Binary files /dev/null and b/readmeImages/seekiaLogoWithSubtitle.jpg differ diff --git a/readmeImages/seekiaWebsiteHomepage.jpg b/readmeImages/seekiaWebsiteHomepage.jpg new file mode 100644 index 0000000..207c306 Binary files /dev/null and b/readmeImages/seekiaWebsiteHomepage.jpg differ diff --git a/resources/assets/Seekia.pdf b/resources/assets/Seekia.pdf new file mode 100644 index 0000000..84a9ab7 Binary files /dev/null and b/resources/assets/Seekia.pdf differ diff --git a/resources/codeSnippets/Header.html b/resources/codeSnippets/Header.html new file mode 100644 index 0000000..5f09c57 --- /dev/null +++ b/resources/codeSnippets/Header.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + diff --git a/resources/codeSnippets/MetaTags.html b/resources/codeSnippets/MetaTags.html new file mode 100644 index 0000000..9441249 --- /dev/null +++ b/resources/codeSnippets/MetaTags.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/applicationScreenshots/en/ancestryComposition.webp b/resources/images/applicationScreenshots/en/ancestryComposition.webp new file mode 100644 index 0000000..1108039 Binary files /dev/null and b/resources/images/applicationScreenshots/en/ancestryComposition.webp differ diff --git a/resources/images/applicationScreenshots/en/browseMatches.webp b/resources/images/applicationScreenshots/en/browseMatches.webp new file mode 100644 index 0000000..75804d2 Binary files /dev/null and b/resources/images/applicationScreenshots/en/browseMatches.webp differ diff --git a/resources/images/applicationScreenshots/en/homePage.webp b/resources/images/applicationScreenshots/en/homePage.webp new file mode 100644 index 0000000..74e6491 Binary files /dev/null and b/resources/images/applicationScreenshots/en/homePage.webp differ diff --git a/resources/images/applicationScreenshots/en/offspringDiseaseProbabilities.webp b/resources/images/applicationScreenshots/en/offspringDiseaseProbabilities.webp new file mode 100644 index 0000000..a7a2bf4 Binary files /dev/null and b/resources/images/applicationScreenshots/en/offspringDiseaseProbabilities.webp differ diff --git a/resources/images/applicationScreenshots/en/racialSimilarity.webp b/resources/images/applicationScreenshots/en/racialSimilarity.webp new file mode 100644 index 0000000..6417dc2 Binary files /dev/null and b/resources/images/applicationScreenshots/en/racialSimilarity.webp differ diff --git a/resources/images/applicationScreenshots/en/totalDiseaseRisk.webp b/resources/images/applicationScreenshots/en/totalDiseaseRisk.webp new file mode 100644 index 0000000..73418f9 Binary files /dev/null and b/resources/images/applicationScreenshots/en/totalDiseaseRisk.webp differ diff --git a/resources/images/codebergLogo.svg b/resources/images/codebergLogo.svg new file mode 100644 index 0000000..f505b54 --- /dev/null +++ b/resources/images/codebergLogo.svg @@ -0,0 +1,57 @@ + + + Codeberg Logo + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Codeberg Logo + + + + Robert Martinez + + + + + Codeberg and the Codeberg Logo are trademarks of Codeberg e.V. + + + 2020-04-09 + + + Codeberg e.V. + + + codeberg.org + + + + + + + + + + + + + diff --git a/resources/images/contact.svg b/resources/images/contact.svg new file mode 100644 index 0000000..1bba4f8 --- /dev/null +++ b/resources/images/contact.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/resources/images/genome.svg b/resources/images/genome.svg new file mode 100644 index 0000000..a7210dc --- /dev/null +++ b/resources/images/genome.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/heart.svg b/resources/images/heart.svg new file mode 100644 index 0000000..9ae86e8 --- /dev/null +++ b/resources/images/heart.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/linux.svg b/resources/images/linux.svg new file mode 100644 index 0000000..c52d324 --- /dev/null +++ b/resources/images/linux.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/resources/images/mac.svg b/resources/images/mac.svg new file mode 100644 index 0000000..0e04b17 --- /dev/null +++ b/resources/images/mac.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/resources/images/seekiaLogo.svg b/resources/images/seekiaLogo.svg new file mode 100644 index 0000000..4a42752 --- /dev/null +++ b/resources/images/seekiaLogo.svg @@ -0,0 +1,106 @@ + + + + diff --git a/resources/images/whitepaper.svg b/resources/images/whitepaper.svg new file mode 100644 index 0000000..20e986e --- /dev/null +++ b/resources/images/whitepaper.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/windows.svg b/resources/images/windows.svg new file mode 100644 index 0000000..7a1c56f --- /dev/null +++ b/resources/images/windows.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/memos/HelloWorld.txt b/resources/memos/HelloWorld.txt new file mode 100644 index 0000000..1b52610 --- /dev/null +++ b/resources/memos/HelloWorld.txt @@ -0,0 +1,97 @@ +| «« Seekia Memo »» +| +|- Signature: +| 7KHjbsdLUOsNjBgs_iY8gfcC8tV9GQ +| X7xQGo6sQBxVgcKQvJJMxMILzLmiBq +| hfZWOzYJr_0XEhIGammETuNCAg== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Ethereum Block Height: +| 17474835 +| +| Ethereum Block Hash: +| 0x37699eda295c4803243d566cd84fb12e634bd1a8dcf91589566a6a6acb4d1a5a +| +| Date: +| June 13, 2023 +| +| Greetings. +| +| My name is Simon Sarasova. +| +| I am deeply concerned about the state of our world. +| Earth's natural beauty is being destroyed as a consequence of humanity's use of technology. +| +| Race extinction is one example of this destruction which causes me anguish. +| Humanity has utilized technology to spread our species throughout the earth, resulting in increased gene flow and racial merging. +| The diverse beauty of the human species is being lost. +| +| There are now more human races on earth than ever before. +| Racial loneliness, which is the inability to find members of the same race to mate with, has become an epidemic. +| Global fertility rates are collapsing. +| +| I am astounded, mesmerized, and fully enamored with the beauty of the human species. +| I feel deep concern as I witness the decline of beautiful racial groups. I feel grief for the beauty that has already been lost. +| I have spent years thinking about these problems and working on a solution. +| +| I have realized that to prevent more race extinctions from occurring, we must encourage members of endangered racial groups to mate with each other. +| To cure racial loneliness, we must help people to find members of their own race to mate with. +| +| These are the reasons why I have created Seekia: A race aware mate discovery network. +| +| Seekia allows users to share their genome-derived race information in their profiles, and find users to mate with based on their race. +| +| Seekia is also genetics-aware. +| Seekia enables users to choose their mate in a way that reduces the probability of their offspring having diseases. +| Users can also choose their mate in such a way to increase the probability of their offspring having certain traits. +| +| The world desperately needs race aware mate discovery technology. +| Seekia's goal is to accelerate the world's adoption of race and genetics aware mate discovery technology. +| Join me in my mission to cure racial loneliness, prevent race extinction, and preserve the beauty of the human species. +| +| Thank you for reading this message. +| Please read the Seekia whitepaper to understand more about the motivations and design of Seekia. +| +| - Simon Sarasova +| +| « Seekia Version 0.1 » +| +| The first release of Seekia is version 0.1. +| +| It is provided in a zip file: +| Seekia-v0.1.zip +| +| Here is the SHA256 checksum of the zip file: +| c1024cc7ce1e4425d7fb450df98baa6c71f24691851665bd9bd94a9ce82a9d56 +| +| « Identity Hashes » +| +| Here is my main Seekia identity hash: +| simonx5yudleks5jhwhnck5s28m +| +| Here is my backup identity hash: +| simon4avl22axtjzrlabos7ma8m +| +| My backup identity hash may be useful if my main identity hash is compromised. +| +| « GPG Key » +| +| This is my GPG Key: +| 112CCEE17CDEB7049EE568A2F85404520BA69D2C +| +| « Hash Based Recovery » +| +| This is my hash-based identity recovery method: +| 9417a37f0c22e6dca11c2e5c84c69e55bf828297e7a093e5cc94b59b76124e2b +| +| This can be used to recover my identity if the cryptography used for identity hashes is broken in the future. +| +| «« End Of Memo »» diff --git a/resources/memos/Version0.11.txt b/resources/memos/Version0.11.txt new file mode 100644 index 0000000..3c413a3 --- /dev/null +++ b/resources/memos/Version0.11.txt @@ -0,0 +1,43 @@ +| «« Seekia Memo »» +| +|- Signature: +| p_zELdp4SWay_8xSw4y-tSI7oZkyfk +| KeYvV8UNVPsXwEcN8dzYPtshxVgd9K +| uNmLxDAEuxGreq_qh1xJlt-DAw== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Ethereum Block Height: +| 17519338 +| +| Ethereum Block Hash: +| 0x8e7776808e2aa6ded347a3393ac05114292adbc840e2e1b7db09ecebd94d12c7 +| +| Date: +| June 20, 2023 +| +| +| This memo is an announcement of Seekia version 0.11. +| +| Filename: +| Seekia-v0.11.zip +| +| SHA256 Checksum: +| 1aeb1126d93359fe9d81c6f4a4042087ef20e56ab189a1db019179903b54a063 +| +| Changelog: +| +| This release fixes a bug which resulted in the profileFormat attribute objects list being corrupted. +| This bug caused profiles to fail to be exported and verified. +| +| +| - Simon Sarasova +| +| «« End Of Memo »» diff --git a/resources/memos/Version0.20.txt b/resources/memos/Version0.20.txt new file mode 100644 index 0000000..f4c69d2 --- /dev/null +++ b/resources/memos/Version0.20.txt @@ -0,0 +1,52 @@ +| «« Seekia Memo »» +| +|- Signature: +| XgDeime3IrC2EVdLJe4I2kG6Hxs13p +| PhDAth2uxp9xKjESh8qekAX20-jrsf +| NkxBWKYBmYVbfzA5M8z7u7DjAQ== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Ethereum Block Height: +| 17589089 +| +| Ethereum Block Hash: +| 0x478cfcdb9bb6c0e3f68eafa820b494ef84b8fbd3f3ec1a4f2102c51323f2a884 +| +| Date: +| June 30, 2023 +| +| +| This memo is an announcement of Seekia version 0.20. +| +| Filename: +| Seekia-v0.20.zip +| +| SHA256 Checksum: +| 67d9b7f351458918a54a1902c9ce98a5aa1a40676ab0262319076010da8dc8cd +| +| Changelog: +| +| - Added AppNetworkType to global settings, created package and GUI page to manage it. - Simon Sarasova +| - Fixed bug in GetFolderSizeInBytes which caused it to fail to read sub-folders. - Simon Sarasova +| - Upgraded from Fyne v2.3.4 to v2.3.5 - Simon Sarasova +| - Improved identity hash generation page code to be simpler, less buggy, and added a hashes per second tracker. - Simon Sarasova +| - Improved identity hash generation time estimation. - Simon Sarasova +| - Added editable Whitepaper.md file so improvements to the whitepaper can be made. - Simon Sarasova +| - Replaced unnecessary maps with functions when creating profileAttributeObjects list. - Simon Sarasova +| - Added Changelog. - Simon Sarasova +| - Renamed ProfileType to IdentityType where appropriate. - Simon Sarasova +| - Hid chat filters related to liking/ignoring for moderators. - Simon Sarasova +| - Hid like/ignore buttons for non-mate users. - Simon Sarasova +| +| +| - Simon Sarasova +| +| «« End Of Memo »» diff --git a/resources/memos/Version0.30.txt b/resources/memos/Version0.30.txt new file mode 100644 index 0000000..094d0ba --- /dev/null +++ b/resources/memos/Version0.30.txt @@ -0,0 +1,140 @@ +| «« Seekia Memo »» +| +|- Signature: +| YFf5Ofl1E2vA3562HBvs2ubtm6VQLg +| Z1AYOS9F3KYiTJ6YKyq2e-NlN7mF3V +| jfMAOgHkJjdnfEj09ZPQ_mAEBA== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Ethereum Block Height: +| 18527621 +| +| Ethereum Block Hash: +| 0x43d6014d847b6c0bd54506b43a958f573c7530ffcfbf948073b700e03537bc73 +| +| Date: +| November 8, 2023 +| +| This memo is an announcement of Seekia version 0.30. +| +| This version is much closer to my ultimate vision for what Seekia should be. My thinking has evolved and I'm a lot happier with this version than with any previous version. +| +| Seekia now has a Racial Similarity calculator. Whitepaper Version 2 is much clearer and makes way more sense. Network Type switching functionality has been added. The code has been upgraded to utilize Golang version 1.21 features. Many important bug fixes and improvements have been implemented. +| +| Cheers! +| +| - Simon Sarasova +| +| --- +| +| Release Filename: +| Seekia-v0.30.zip +| +| Release SHA256 Checksum: +| eebf5ed39cc550a34f75d066776a2025e6874216844a7e4c22ecf17e63047d9c +| +| +| GPG Signature Filename: +| Seekia-v0.30.zip.asc +| +| GPG Signature SHA256 Checksum: +| 72e424eee3a2a5f38b50541f62016847cc650adaf4cbcd0f9a628d4c79eda6ad +| +| +| Version 0.30 Changelog: +| +| - Improved ReadMe.md. - Simon Sarasova +| - Improved Documentation.md and Future Plans.md. - Simon Sarasova +| - Improved the whitepaper and updated Whitepaper.pdf to version 2. - Simon Sarasova +| - Ran "go mod tidy" and updated some imported modules. - Simon Sarasova +| - Reduced message size by ~33 bytes by removing unnecessary covert public key from the outer message. - Simon Sarasova +| - Improved the GetProfileAttributeHashesMap function to be slightly faster. - Simon Sarasova +| - Added the NumberOfReviews calculated attribute. - Simon Sarasova +| - Improved the readProfiles package in various ways. - Simon Sarasova +| - Improved the ReadRawGenomeFile function. It now returns a genomeMap representing locus values as structs instead of strings. It also now avoids adding unknown locus values to the total loci count. - Simon Sarasova +| - Improved the ViewedModerators and ViewedContent generation progress bars by making them update more frequently. - Simon Sarasova +| - Added the TotalPolygenicDiseaseRiskScore and OffspringTotalPolygenicDiseaseRiskScore calculated attributes. - Simon Sarasova +| - Fixed bug which caused the chat conversations generation progress bar to jump backwards. - Simon Sarasova +| - Improved the SelectMyConversationsSortByAttribute page. - Simon Sarasova +| - Added progress updating to the myChatMessages generation portion of the myChatConversations generation process. - Simon Sarasova +| - Made various optimizations to get the Moderate Profiles page to load faster. It is still too slow. - Simon Sarasova +| - Added a wordLists test package. - Simon Sarasova +| - Improved the ReadProfile function. It now returns an unformatted raw profile map and does not calculate the profile's attribute hashes map. Created new functions to retrieve formatted profile attribute values and profile attribute hash maps. Reading profiles is faster now. - Simon Sarasova +| - Improved the whitepaper. - Simon Sarasova +| - Improved Future Plans.md. - Simon Sarasova +| - Improved the whitepaper. - Simon Sarasova +| - Upgraded msgpack to version 5.4.0. - Simon Sarasova +| - Upgraded Fyne to version 2.4.1. - Simon Sarasova +| - Improved the trait genetic similarity calculation. Each allele is now compared, so locus base pairs with only 1 common allele are counted as being 50% similar. - Simon Sarasova +| - Created a test for the attributeDisplay package. Also added missing attributes to the package. - Simon Sarasova +| - Added the Questionnaire attribute to the attributeDisplay package and the setViewNewProfileChanges page. - Simon Sarasova +| - Improved the whitepaper. - Simon Sarasova +| - Improved Specification.md. - Simon Sarasova +| - Improved the edwardsKeys and blake3 packages. - Simon Sarasova +| - Improved Future Plans.md. - Simon Sarasova +| - Renamed the ExportedProfiles folder to MyExportedProfiles. - Simon Sarasova +| - Content hashes are now created by hashing the entire content bytes. Thus, hashes now incorporate signatures. Content hashes have also been removed from within serialized content, reducing content size. - Simon Sarasova +| - Improved the whitepaper. It now describes how the racial similarity calculator works. - Simon Sarasova +| - Improved the ViewAllMyDesires page. - Simon Sarasova +| - Improved the myChosenAnalysis package and related GUI. - Simon Sarasova +| - A user's chosen genetic analysis is now read into memory. Thus, the analysis json file only has to be unmarshalled once, or whenever a new analysis is generated. - Simon Sarasova +| - Improved app theme colors and the theme selection GUI. Added the Ocean theme. - Simon Sarasova +| - Made various improvements to the View Profile and Desires pages. Added monogenic disease information to fake profiles. - Simon Sarasova +| - Added the Match Score Breakdown page. - Simon Sarasova +| - Added the timestamps folder and ReadMe. - Simon Sarasova +| - Improved the GUI in various ways. - Simon Sarasova +| - Renamed Diseases to Monogenic Diseases, renamed Ailments/Health Risks to Polygenic Diseases. - Simon Sarasova +| - Improved the SelectMyConversationsSortByAttribute page. - Simon Sarasova +| - Added Racial Similarity, Skin Color and Hair Texture profile attributes; added genetic analysis tests; made use of switch statements; and implemented various other improvements and bug fixes. - Simon Sarasova +| - Updated ReadMe.md images. - Simon Sarasova +| - Renamed "Location Composition" to "Ancestry Composition". - Simon Sarasova +| - Removed the navigation bar from all loading screens. The navigation bar was not usable during loading anyway. - Simon Sarasova +| - Improved the Ascending/Descending default for several matches sort by attributes. - Simon Sarasova +| - Updated Fyne to version 2.4.0. - Simon Sarasova +| - Added Contributors.md. - Simon Sarasova +| - Renamed alphabetRange package to byteRange. - Simon Sarasova +| - Renamed notarize to timestamp when referring to memo timestamping. - Simon Sarasova +| - Fixed bug which caused an unnecessary Unknown value item to be added to donut chart statistics items lists. - Simon Sarasova +| - Replaced usage of maps with structs in myChatFilterStatistics package. - Simon Sarasova +| - Added the IsIgnored desire. - Simon Sarasova +| - Replaced usage of maps with structs in myDesireStatistics package. - Simon Sarasova +| - Made use of the GetListOfMapKeys and GetListOfMapValues functions. - Simon Sarasova +| - Renamed Race to Ancestry when referencing ancestral locations. I was trying to equate race and ancestry but they are not the same. - Simon Sarasova +| - Improved chat GUI code to be faster at checking which messages are seen. - Simon Sarasova +| - Replaced all usage of sort package with slices package. - Simon Sarasova +| - Improved the helpers package in various ways. - Simon Sarasova +| - Added information to the GUI to teach the user that location composition and neanderthal variant predictions are averages which will not always match any conceived offspring exactly. - Simon Sarasova +| - Fixed bug on statistics data page which caused empty parentheses to be shown for nonexistent units. - Simon Sarasova +| - Replaced a few list functions in the helpers package with generic versions. - Simon Sarasova +| - Removed splitLists package, replaced its usage with a single generic function. - Simon Sarasova +| - Improved generate package. Fake profiles may now contain genome locus values. - Simon Sarasova +| - User profiles now share genome locus values for rsIDs, not locus identifiers. Thus, profiles are smaller because loci which are used for multiple traits/diseases/rules only require 1 entry. - Simon Sarasova +| - Removed sorting package and replaced its usage with the slices package. - Simon Sarasova +| - Updated badger database to version 4.2.0. - Simon Sarasova +| - Improved statistics functionality and code. Maps have been replaced with structs, simplifying and speeding up code. - Simon Sarasova +| - Upgraded to Golang version 1.21. Made use of new language features. - Simon Sarasova +| - Added NetworkType functionality. Also implemented many fixes and improvements. - Simon Sarasova +| - Moved locus metadata into seperate files for each chromosome. - Simon Sarasova +| - Moved company locus aliases to the locusMetadata package, and added many company aliases. 23andMe files now provide many more locations used in genetic analyses. - Simon Sarasova +| - Switched to using bufio Reader to read genome files for improved performance and better code readability. - Simon Sarasova +| - Added readRawGenomes package tests. - Simon Sarasova +| - Genome maps created from raw genome files now only include loci which are used in the genetic analysis, speeding up analysis time and raw genome file reading. - Simon Sarasova +| - Added seedPhrase package tests. - Simon Sarasova +| - Fixed CRITICAL bug which would rarely result in no randomness being used to generate various keys. Thankfully, seed phrases and identity keys were not affected, so my identity hashes and memos should still be secure. - Simon Sarasova +| - Added locusMetadata package, resulting in simpler code and a more accurate genetic analysis. Now rsID aliases are handled during genome combining. The locus metadata package adds locus position information, which will be necessary for predicting the effects of genetic linkage in probability estimates. - Simon Sarasova +| - Added separators to the genetic reference pages to improve readability. - Simon Sarasova +| - Fixed bug in genetic analysis which caused analysis to not account for multiple different monogenic disease variants on the same locus. - Simon Sarasova +| - Improved the genetic analysis so each locus has an IsPhased status, rather than per-genome. This should improve analysis accuracy for combined genomes. - Simon Sarasova +| - Removed GenomeStrand from the ReadRawGenome function outputs. The function itself will format all locus values to the Plus strand. - Simon Sarasova +| - Started using Int64 to represent RSIDs rather than strings, improved data structure to store genomes with metadata. - Simon Sarasova +| +| +| «« End Of Memo »» diff --git a/resources/memos/Version0.40.txt b/resources/memos/Version0.40.txt new file mode 100644 index 0000000..ef52bf8 --- /dev/null +++ b/resources/memos/Version0.40.txt @@ -0,0 +1,91 @@ +| «« Seekia Memo »» +| +|- Signature: +| 0v2AeP1yLyqRLjlgpYF8_B7SsOJxdD +| YeKYeOG-11GNJI4GGnFB569nZW_KSe +| 5MfZZXh7_kGibUdEV7wmxcT3Dw== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Cardano Block Height: +| 10030712 +| +| Cardano Block Hash: +| fbb3b1832fb7620f58a95e5398b97925247100cadf63df6e5e93e43ab883e163 +| +| Date: +| March 8, 2024 +| +| +| This memo is an announcement of Seekia version 0.40. +| +| Version 0.40 has many improvements. The most important improvements are to the whitepaper, which is now much more logical and effective at explaining Seekia's benefits to humanity. +| +| Golang has been upgraded to version 1.22. Cardano functionality has been added. The memo format has been improved. Chat messages are now simpler and smaller. I added a neural-network based genetic trait prediction system using OpenSNP for training data. Unfortunately, I can't get the model to train, so I don't know how accurate its predictions will be using its current architecture. I also changed Seekia's branding from Prevent Race Extinction to Prevent Beauty Extinction to better explain Seekia's goal of preventing the world's most beautiful races from going extinct. +| +| Cheers! +| +| - Simon Sarasova +| +| --- +| +| Release Filename: +| Seekia-v0.40.zip +| +| Release SHA256 Checksum: +| e5dafd5df1813272a3e9431ff961194d36de1e2bb7a69fffee0c1569a9f4f4a8 +| +| +| GPG Signature Filename: +| Seekia-v0.40.zip.asc +| +| GPG Signature SHA256 Checksum: +| baaf785aab14b943beae8c3f6ef56cea8a0451e049c1bf46272a7489ff491ba4 +| +| +| Version 0.40 Changelog: +| +| - Improved Whitepaper.md and upgraded Whitepaper.pdf to version 4. - Simon Sarasova +| - Improved Documentation.md. - Simon Sarasova +| - Improved Whitepaper.md and upgraded Whitepaper.pdf to version 3. - Simon Sarasova +| - Improved ReadMe.md. - Simon Sarasova +| - Improved the readMemos_test package. - Simon Sarasova +| - Improved Whitepaper.md. - Simon Sarasova +| - Improved ReadMe.md, Documentation.md, and Future Plans.md. - Simon Sarasova +| - Upgraded the golang.org/x/crypto and golang.org/x/image modules. - Simon Sarasova +| - Improved the seedPhrase and seedPhrase_test packages. - Simon Sarasova +| - Fixed a bug which created empty database entries. - Simon Sarasova +| - Made use of slices.Concat(). - Simon Sarasova +| - Improved the goeffects and imageEffects packages. Created the imageEffects_test package. - Simon Sarasova +| - Upgraded Fyne to version 2.4.4. - Simon Sarasova +| - Replaced "Prevent Race Extinction" with "Prevent Beauty Extinction". - Simon Sarasova +| - Improved the My Data page. - Simon Sarasova +| - Fixed a bug which caused Seekia to fail to check for user identities before deleting an app user. - Simon Sarasova +| - Added Gorgonia to Imports.md and added its license. - Simon Sarasova +| - Upgraded to Golang version 1.22. Made use of new language features. - Simon Sarasova +| - Improved the memo format so empty lines do not contain unnecessary whitespace. Added the ability to view the unarmored content of memos. - Simon Sarasova +| - Improved the createMemos and createMemos_test packages. Created the readMemos_test package. - Simon Sarasova +| - Improved the seedPhrase and seedPhrase_test packages. - Simon Sarasova +| - Added the capacity parameter to calls to make() when creating slices for improved performance. - Simon Sarasova +| - Added Cardano functionality. - Simon Sarasova +| - Upgraded Circl to version 1.3.7. - Simon Sarasova +| - Updated Fyne to version 2.4.3. - Simon Sarasova +| - Implemented neural network training and prediction for genetic traits. Models do not train or predict accurately yet. - Simon Sarasova +| - Improved ReadMe.md. - Simon Sarasova +| - Improved Documentation.md. - Simon Sarasova +| - Improved message sorting so messages with the same TimeSent always sort in the same order. - Simon Sarasova +| - Simplified message construction and made messages smaller by removing the Covert Key and replacing its functionality with the additionalData field. - Simon Sarasova +| - Created the Create Genetic Models utility. Started to build the neural network genetic trait prediction functionality. - Simon Sarasova +| - Removed unnecessary sorted datastores from myMatches, myChatConversations, viewedModerators, viewedContent, and viewedHosts. - Simon Sarasova +| - Fixed bug which caused chat messages to never load if user identity did not exist. - Simon Sarasova +| - Improved Whitepaper.md. - Simon Sarasova +| +| +| «« End Of Memo »» \ No newline at end of file diff --git a/resources/memos/Version0.50.txt b/resources/memos/Version0.50.txt new file mode 100644 index 0000000..ba71818 --- /dev/null +++ b/resources/memos/Version0.50.txt @@ -0,0 +1,90 @@ +| «« Seekia Memo »» +| +|- Signature: +| cu_Hm29bxoQUJhK4SCFCh5XfEuevRV +| 74XqE13x_B9mFboonsSlX25Nq-JV-b +| Dx4LaPOVtj_3ZiB16LygAXSiAQ== +| +|- Identity Key: +| f59a0bce855d6e48105612ae73ffabfc +| 4fac1349226433ff586e08b9b32ffd9d +| +|- Author: +| simonx5yudleks5jhwhnck5s28m +| +|- Memo: +| +| Cardano Block Height: +| 10168773 +| +| Cardano Block Hash: +| df2febc3ea2008560b44ae5190be496b25bf5d4814aae12efd95a6f8dab8a7df +| +| Date: +| April 10, 2024 +| +| +| This memo is an announcement of Seekia version 0.50. +| +| Version 0.50 contains significant improvements to Seekia's branding, documentation, and whitepaper. +| +| Cheers! +| +| - Simon Sarasova +| +| --- +| +| The file "Seekia-v0.50.tgz" contains the current Seekia source code. +| +| The file "SeekiaGitHistory-v0.50.bundle" contains Seekia's Git commit history. +| +| --- +| +| Release Filename: +| Seekia-v0.50.tgz +| +| Release SHA256 Checksum: +| 163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a +| +| +| Release GPG Signature Filename: +| Seekia-v0.50.tgz.asc +| +| Release GPG Signature SHA256 Checksum: +| ce6d9eb7a6b016b386dcddd1c6fda87c7c43f8cb3a1197ba367a428c449d4537 +| +| +| +| Release Git History Filename: +| SeekiaGitHistory-v0.50.bundle +| +| Release Git History SHA256 Checksum: +| 91edbccf32d90abe9670aeb5aed800d21c3c1ec94f0791df2a9f443ff6b85f17 +| +| +| Release Git History GPG Signature Filename: +| SeekiaGitHistory-v0.50.bundle.asc +| +| Release Git History GPG Signature SHA256 Checksum: +| 8c36a33ab7c0111801e4b73ca25a280753ed7201686d72054c0d571b57d4cfb9 +| +| --- +| +| Version 0.50 Changelog: +| +| - Improved Whitepaper.md and upgraded Whitepaper.pdf to Version 5. - Simon Sarasova +| - Improved Whitepaper.md. - Simon Sarasova +| - Upgraded the golang.org/x/crypto module to version 0.21.0. - Simon Sarasova +| - Improved Whitepaper.md and Future Plans.md. - Simon Sarasova +| - Improved Whitepaper.md. - Simon Sarasova +| - Fixed a bug in the View Profile GUI which caused the View Trait Rules page to fail to load. - Simon Sarasova +| - Added all calculated attributes to the attributeDisplay package. Improved the currencies package. - Simon Sarasova +| - Added folders for each release in timestamps/Releases to accommodate releases with multiple files. - Simon Sarasova +| - Updated the worldCities.messagepack file to version 2.2 of the locations database. Made the file smaller by storing city identifiers instead of names. - Simon Sarasova +| - Improved the generate and createMemos_test packages. - Simon Sarasova +| - Replaced "Facilitate eugenic breeding" with "Beautify the human species" in some places. - Simon Sarasova +| - Improved Documentation.md. - Simon Sarasova +| - Replaced "Prevent Beauty Extinction" with "Facilitate Eugenic Breeding" - Simon Sarasova +| +| +| «« End Of Memo »» \ No newline at end of file diff --git a/resources/pages/about.html b/resources/pages/about.html new file mode 100644 index 0000000..8fbc931 --- /dev/null +++ b/resources/pages/about.html @@ -0,0 +1,127 @@ + + + + + + + + +Seekia - {{.About}} + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + +

About

+ +
+ +

Seekia aims to accelerate humanity's adoption of race and genetics aware mate discovery technology.

+ +

Seekia aims to bring genetic order to humanity's breeding patterns.

+ +
+ +
+ +

Be Race Aware

+ +
+ +

Seekia is a mate discovery network where users can find a mate while having a deep awareness of each potential partner's race.

+
+

Users can share racial information in their profiles such as their eye, skin, and hair color; hair texture; genetic ancestry; haplogroups; and the alleles of their genes which effect physical traits.

+
+

Seekia enables users to browse and filter potential mates by their racial attributes.

+
+

Seekia can also calculate the racial characteristics for prospective offspring between users.

+
+

Seekia allows for users to predict and choose the race of their offspring by selecting a mate who is the most capable and likely to produce offspring of their desired race.

+ +

+ +

Curing Racial Loneliness

+ +
+ +

Seekia aims to cure racial loneliness by helping people to find members of their own race to mate with.

+ +

Seekia aims to help users to produce offspring who resemble them.

+ +
+ +

Facilitating Eugenic Breeding

+ +
+ +

Seekia aims to improve humanity's genetics by making humans more beautiful, healthy, and intelligent.

+ +
+ +

Users can filter and sort users by their genetic disease and trait information.

+ +
+ +

Users can analyze their genomes using the Seekia app to learn about monogenic disease risks, polygenic disease risks, and traits.

+ +
+ +

Users can share their disease and trait information in their profiles.

+ +
+ +

Seekia allows users to choose their mate in such a way to reduce the probability of their offspring having diseases and increase the probability of their offspring having certain traits.

+ +
+ +

Seekia users will choose mates who are the most likely to produce beautiful, healthy, and intelligent offspring.

+ +
+ +
+ +
+

Learn more by reading the Seekia whitepaper.

+
+ + + + +
+ +

Websites

+ +

Below are the official Seekia websites.

+

These sites should be nearly identical to the website you are currently viewing.

+ +
+

Clearnet Site:

+Seekia.net +
+ +
+

Ethereum IPFS Site:

+Seekia.eth +
+ + + +
+ + + diff --git a/resources/pages/archive.html b/resources/pages/archive.html new file mode 100644 index 0000000..2d88aa4 --- /dev/null +++ b/resources/pages/archive.html @@ -0,0 +1,283 @@ + + + + + + + + +Seekia - {{.Archive}} + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + + +

Archive

+ +
+ +

This page contains links to download all historical Seekia releases.

+

These releases are hosted on IPFS.

+

IPFS is a decentralized network where content can be hosted on multiple machines.

+

Each release has 2 download methods: IPFS and Gateway.

+

IPFS links require using software that can download content from the IPFS network, such as the Brave Browser.

+

Gateway links allow you to download from a third-party website using any browser.

+

You should verify the SHA256 checksum for each file you download.

+ + +
+ +

Version 0.50

+ +
+ +

Date:

+

April 10, 2024

+ +
+ +

Memo Announcement:

+Version0.50.txt + +
+ +

Release Filenames:

+

Seekia-v0.50.tgz

+

SeekiaGitHistory-v0.50.bundle

+ +
+ +

Download via IPFS:

+ +Seekia-v0.50.tgz +SeekiaGitHistory-v0.50.bundle + +
+ +

Download via IPFS Gateway:

+ +Seekia-v0.50.tgz +SeekiaGitHistory-v0.50.bundle + +
+ +

SHA256 Checksums:

+ +

Seekia-v0.50.tgz:

+

163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a

+ +

SeekiaGitHistory-v0.50.bundle:

+

91edbccf32d90abe9670aeb5aed800d21c3c1ec94f0791df2a9f443ff6b85f17

+ +
+ +

PGP Signatures:

+ +Seekia-v0.50.tgz.asc +SeekiaGitHistory-v0.50.bundle.asc + + +
+ + + + + +
+ +

Version 0.40

+ +
+ +

Date:

+

March 8, 2024

+ +
+ +

Memo Announcement:

+Version0.40.txt + +
+ +

Filename:

+

Seekia-v0.40.zip

+ +
+ +Download via IPFS +Download via IPFS Gateway + +
+ +

SHA256 Checksum:

+

e5dafd5df1813272a3e9431ff961194d36de1e2bb7a69fffee0c1569a9f4f4a8

+ +
+ +

PGP Signature:

+Seekia-v0.40.zip.asc + +
+ + + +
+ +

Version 0.30

+ +
+ +

Date:

+

November 8, 2023

+ +
+ +

Memo Announcement:

+Version0.30.txt + +
+ +

Filename:

+

Seekia-v0.30.zip

+ +
+ +Download via IPFS +Download via IPFS Gateway + +
+ +

SHA256 Checksum:

+

eebf5ed39cc550a34f75d066776a2025e6874216844a7e4c22ecf17e63047d9c

+ +
+ +

PGP Signature:

+Seekia-v0.30.zip.asc + +
+ +
+ +

Version 0.20

+ +
+ +

Date:

+

June 30, 2023

+ +
+ +

Memo Announcement:

+Version0.20.txt + +
+ +

Filename:

+

Seekia-v0.20.zip

+ +
+ +Download via IPFS +Download via IPFS Gateway + +
+ +

SHA256 Checksum:

+

67d9b7f351458918a54a1902c9ce98a5aa1a40676ab0262319076010da8dc8cd

+ +
+ +

PGP Signature:

+Seekia-v0.20.zip.asc + +
+ + + +
+ +

Version 0.11

+ +
+ +

Date:

+

June 20, 2023

+ +
+ +

Memo Announcement:

+Version0.11.txt + +
+ +

Filename:

+

Seekia-v0.11.zip

+ +
+ +Download via IPFS +Download via IPFS Gateway + +
+ +

SHA256 Checksum:

+

1aeb1126d93359fe9d81c6f4a4042087ef20e56ab189a1db019179903b54a063

+ +
+ +

PGP Signature:

+Seekia-v0.11.zip.asc + +
+ + + +
+ +

Version 0.1

+ +
+ +

Date:

+

June 13, 2023

+ +
+ +

Memo Announcement:

+HelloWorld.txt + +
+ +

Filename:

+

Seekia-v0.1.zip

+ +
+ +Download via IPFS +Download via IPFS Gateway + +
+ +

SHA256 Checksum:

+

c1024cc7ce1e4425d7fb450df98baa6c71f24691851665bd9bd94a9ce82a9d56

+ +
+ +

PGP Signature:

+Seekia-v0.1.zip.asc + +
+ +
+ + + diff --git a/resources/pages/chooseLanguage.html b/resources/pages/chooseLanguage.html new file mode 100644 index 0000000..989f505 --- /dev/null +++ b/resources/pages/chooseLanguage.html @@ -0,0 +1,34 @@ + + + + + + + + +Seekia - {{.ChooseLanguage}} + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + +

{{.ChooseLanguage}}:

+ +
+ +English +Español + +
+ +
+ + + diff --git a/resources/pages/contribute.html b/resources/pages/contribute.html new file mode 100644 index 0000000..f90ce3d --- /dev/null +++ b/resources/pages/contribute.html @@ -0,0 +1,61 @@ + + + + + + + + +Seekia - {{.Contribute}} + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + +

Contribute

+ +
+ +

Join us in our goal of curing racial loneliness and facilitating eugenic breeding.

+ +
+ +

Git Repository

+ + + +

Visit the Git repository to contribute to the source code of Seekia.

+ +Codeberg.org/sarasova/seekia + +
+ +

Contact

+ + + +

Contact Seekia's creator and lead maintainer, Simon Sarasova.

+

Visit his website for his contact information:

+SimonSarasova.eth/contact.html +

To access a .eth website, you can use Brave browser.

+ +
+ +

You can also use a trusted gateway to access his website.

+

You should visit his site from multiple gateways to ensure you are seeing an authentic version of his site.

+ +SimonSarasova.eth.limo/contact.html +SimonSarasova.eth.link/contact.html + + +
+ + + diff --git a/resources/pages/download.html b/resources/pages/download.html new file mode 100644 index 0000000..0289264 --- /dev/null +++ b/resources/pages/download.html @@ -0,0 +1,137 @@ + + + + + + + + +Seekia - {{.Download}} + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + +

Download

+ +
+ +

Seekia is unfinished software. It does not connect to the internet or download profiles.

+ +

You must compile it yourself to run it. The instructions are included in the download.

+ +
+ +

Download Seekia Version 0.50

+ +

File Name: Seekia-v0.50.tgz

+ +{{.Download}} + +
+ +

Verify File Integrity

+ +

You should verify the file downloaded correctly by verifying the file's SHA256 checksum.

+ +
+ +

Seekia v0.50 SHA256 Checksum:

+

163afee5b3fa85f0600a1b651b64780482f72fd58096796a4bea4c01c6c22b5a

+ +
+ +

Use the command for your operating system to compute the file's checksum.

+

The result from the command should match the above checksum.

+ +
+ +Linux + sha256sum Seekia-v0.50.tgz +
+ +
+ +Mac + shasum -a 256 Seekia-v0.50.tgz +
+ +
+ +Windows + Get-FileHash Seekia-v0.50.tgz +
+ +
+ +

Verify File Authenticity

+ +

You should verify the downloaded file is authentic by verifying its PGP signature.

+ +
+ +

Download v0.50 PGP Signature:

+Seekia-v0.50.tgz.asc + +
+ +

You must verify the signature and retrieve the PGP key which signed the release.

+

You can use GnuPG, a library for verifying PGP signatures.

+

Below are the instructions for each operating system.

+ +
+ +
+ +Linux +

Use this command to get the signing key.

+ gpg --verify Seekia-v0.50.tgz.asc Seekia-v0.50.tgz +
+ +
+
+ + +
+Windows/Mac +

Use a search engine to learn how to verify PGP signatures.

+
+ +
+ +

You must verify the signing key belongs to the author, Simon Sarasova.

+ +
+

Simon Sarasova's GPG signing key:

+

112CCEE17CDEB7049EE568A2F85404520BA69D2C

+
+ +

Simon's signing key is also located on his website:

+SimonSarasova.eth/keys.html +

To access a .eth website, you can use Brave browser.

+ +
+ +

You can also use a trusted gateway to access his website.

+

You should visit his site from multiple gateways to ensure you are seeing an authentic version of his site.

+ +SimonSarasova.eth.limo/keys.html +SimonSarasova.eth.link/keys.html + +
+ +
+ +Download Archived Versions + +
+ + + diff --git a/resources/pages/index.html b/resources/pages/index.html new file mode 100644 index 0000000..a9c82e0 --- /dev/null +++ b/resources/pages/index.html @@ -0,0 +1,90 @@ + + + + + + + + +Seekia - {{.BeRaceAware}} + + + + + +{{.CodeSnippet_MetaTags}} + + + + +
+ +{{.CodeSnippet_Header}} + +

{{.SeekiaIsDescription}}

+ +

The goal of Seekia is to help humanity mate in a race and genetics aware manner.

+ + + +
+ +

{{.BeRaceAware}}

+ +

Find members of the race which you desire.

+

View racial information about users such as eye, skin, and hair color; genetic ancestry; haplogroups; and more.

+

View the calculated ancestry of your prospective offspring with each user.

+ + + +
+ +

{{.TheCureToRacialLoneliness}}

+ +

Sort your matches by their racial similarity to yourself.

+

Find matches who look like you, and produce offspring who resemble you.

+ + + +
+ +

{{.BeGeneticsAware}}

+ +

Understand your offspring's genetic disease risk and trait scores.

+

Filter your matches based on a calculated genetic analysis for your offspring.

+

Maximize the probability of a healthy offspring who has the traits which you desire.

+ + + +
+ +

{{.BreedInAEugenicManner}}

+ +

Seekia aims to facilitate eugenic breeding by encouraging humans to breed more beautiful, healthy, and intelligent offspring.

+

Seekia aims to help members of the world's most beautiful races to meet and have children.

+ + + +
+ +

{{.BrowseForFree}}

+ +

Browse user profiles for free.

+

Broadcasting a profile and chatting costs money.

+ + + +
+ +

{{.OpenSource}}

+ +

The Seekia application source code is released into the public domain.

+ +
+ +{{.Download}} + +
+ + + diff --git a/resources/release/.gitignore b/resources/release/.gitignore new file mode 100644 index 0000000..9e30eb9 --- /dev/null +++ b/resources/release/.gitignore @@ -0,0 +1 @@ +*.tgz \ No newline at end of file diff --git a/resources/release/ReadMe.md b/resources/release/ReadMe.md new file mode 100644 index 0000000..69d3e72 --- /dev/null +++ b/resources/release/ReadMe.md @@ -0,0 +1,8 @@ + +## Read Me + +This is the folder where you must place the Seekia release .tgz file. + +You can use an empty file if you want, but it must be named the correct filename. + +The current release filename is stored in `main.go` in the `currentReleaseFilename` variable. \ No newline at end of file diff --git a/resources/signatures/Seekia-v0.1.zip.asc b/resources/signatures/Seekia-v0.1.zip.asc new file mode 100644 index 0000000..866599d --- /dev/null +++ b/resources/signatures/Seekia-v0.1.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSOPGzA7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LJNDAP9vIHmvGse5DZKG+jXQqOqdHqpjpU8Bawt0drX8mJxxiQEAs6TUsAC66+NM +XVEglnSCDKMtqo7KnGcBcyj1ozZIggI= +=flkF +-----END PGP SIGNATURE----- diff --git a/resources/signatures/Seekia-v0.11.zip.asc b/resources/signatures/Seekia-v0.11.zip.asc new file mode 100644 index 0000000..09d2866 --- /dev/null +++ b/resources/signatures/Seekia-v0.11.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSRTtDA7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LDLZAPwOECaD5UzQ5m79zDzTxJ0/ZhCwqrYmVSwT5xyr5mbscgD7ByNq3AIhw50Q +oFZ5h/plZRXoF+IPyicxezxbJ/gA/Ac= +=U0jq +-----END PGP SIGNATURE----- diff --git a/resources/signatures/Seekia-v0.20.zip.asc b/resources/signatures/Seekia-v0.20.zip.asc new file mode 100644 index 0000000..bfe24d0 --- /dev/null +++ b/resources/signatures/Seekia-v0.20.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmSeQl7A7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LFXAAQDE+5EFzshzWJ4T9HgduK7g0p1haXEvMatSNUjjJZu94wD/aS+aaVD2sSer +DOOA1qXNXAiN2PLheArlFzzrR+ZwAQg= +=DEre +-----END PGP SIGNATURE----- diff --git a/resources/signatures/Seekia-v0.30.zip.asc b/resources/signatures/Seekia-v0.30.zip.asc new file mode 100644 index 0000000..7d262b5 --- /dev/null +++ b/resources/signatures/Seekia-v0.30.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCgHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmVLUq3A7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LNs+AP4sZa4YebJ04u4vlbt1yspginT4NMnubK/7Aia/9AkrswD7Bh3AtHNeZHgO +5jnpcI7tkzQPvcLE4AcUZRIQ349rjQI= +=J9wv +-----END PGP SIGNATURE----- diff --git a/resources/signatures/Seekia-v0.40.zip.asc b/resources/signatures/Seekia-v0.40.zip.asc new file mode 100644 index 0000000..b772887 --- /dev/null +++ b/resources/signatures/Seekia-v0.40.zip.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmXrYzvA7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LAOMAP9hxdCvZKK7Lz6Va4xc31HvfdxxRRRn2czDS17UR8vIDwD/ZGPCCTBFNA1B +6BJMbyzLAoq2eKlCx2bNToKwX4gZ6wQ= +=PSL2 +-----END PGP SIGNATURE----- diff --git a/resources/signatures/Seekia-v0.50.tgz.asc b/resources/signatures/Seekia-v0.50.tgz.asc new file mode 100644 index 0000000..e93fae1 --- /dev/null +++ b/resources/signatures/Seekia-v0.50.tgz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmYWd1XA7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LDxJAP0RGqEc3nPHu5V2n3hrWgbnYRYASA/cfY+yhw1YBNIt2AEA9RI09pYlJnPc +CpaW9vW5yYE5gyNV8nlkCjwInnZhjQo= +=FbtU +-----END PGP SIGNATURE----- diff --git a/resources/signatures/SeekiaGitHistory-v0.50.bundle.asc b/resources/signatures/SeekiaGitHistory-v0.50.bundle.asc new file mode 100644 index 0000000..11efd4c --- /dev/null +++ b/resources/signatures/SeekiaGitHistory-v0.50.bundle.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIkBAAWCAHMFiEEESzO4XzetwSe5Wii+FQEUgumnSwFAmYWeWfA7SYAmDMEZH98 +qBYJKwYBBAHaRw8BAQdAwEUyZVL64eDCk4KUWn6FNBB6Ruufmfl9yiO7QbRXIo+0 +H1NpbW9uIFNhcmFzb3ZhIDxzaW1vbkBzYXJhc292YT6ImQQTFgoAQRYhBBEszuF8 +3rcEnuVoovhUBFILpp0sBQJkf3yoAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQW +AgMBAh4HAheAAAoJEPhUBFILpp0shhEA/2DtSWWuhKZ7bpawKSkACQn5dZT/J6cm +GchXsyvidqfWAQD+Hm7eKnKCat8aina43gfNflXjLOONHRgZIOdbUtytDLg4BGR/ +fKgSCisGAQQBl1UBBQEBB0AAVG4K4ZcExTjPuGmPwCTVphvzezrm33W021KOJUpV +bwMBCAeIfgQYFgoAJhYhBBEszuF83rcEnuVoovhUBFILpp0sBQJkf3yoAhsMBQkD +wmcAAAoJEPhUBFILpp0sDEQA/0ddlnCH2dn2h0ctZL3hyP7FG+uHESAwG12AiiQE +LxhsAP9py6k+vLCaOpj3M2qxR+XZdpENwWr8stqYnWRa1JlFBgAKCRD4VARSC6ad +LAUXAQDTeq5kX5amMHgVh0sbW03iub7P9Dx3hPxHk2mOCsIm/wD+IqGhvUWmfSMP +j8LTstfvqJ4YleEaNCXidI3JuVheTAI= +=74o/ +-----END PGP SIGNATURE----- diff --git a/resources/style.css b/resources/style.css new file mode 100644 index 0000000..d2c46ce --- /dev/null +++ b/resources/style.css @@ -0,0 +1,477 @@ + + + +body{ + + background-image: url(./images/genome.svg); + background-size:7em; + background-color:cornflowerblue; + + display:flex; + flex-direction:column; + justify-content:center; + align-items:center; + + padding-top:0em; + padding-bottom:0em; + margin-top:0em; + margin-bottom:0em; + + font-family:"Helvetica", serif; +} + + +h1{ + margin-bottom:0.6em; +} + +p{ + font-size:1.2em; + margin-top:.5em; + margin-bottom:.5em; +} + +a{ + color:black; + font-size:1.2em; + text-decoration:underline; + + margin-top:0.5em; + margin-bottom:0.5em; +} + +a:hover{ + color:red; + cursor: pointer; +} + + +.pageDiv{ + + display:flex; + flex-direction:column; + justify-content:center; + align-items:center; + + background-color:lightsteelblue; + border-radius:1em; + + width:63vw; + + padding-top:0em; + padding-bottom:4em; + padding-left:3em; + padding-right:3em; + + margin-top:1em; + margin-bottom:3em; + + box-shadow:rgba(0, 0, 0, 0.2) 0em 0em 4em 1em; +} + +.pageHeader{ + + display: flex; + flex-direction:column; + align-items: center; + justify-content: center; + + width:100%; +} + + +.languageBar{ + display:flex; + flex-direction:row; + align-items:center; + justify-content:center; + + width: 100vw; + background-color:blue; +} + +.languageBarLabel{ + color:white; +} + +.languageBarButton{ + color:white; + padding:.8em; + text-decoration: none; + font-weight:bold; +} + +.logoAndTitleRow{ + display: flex; + flex-direction:row; + align-items:center; + justify-content:center; + height:8em; + width:100%; + margin-top:2.5em; + margin-bottom:.5em; + + padding-right:1em; +} + +.seekiaLogo{ + height:100%; +} + +.seekiaTitle{ + font-family:"Helvetica", sans-serif; + font-size:5em; + font-weight:bold; + padding-top:.2em; +} + +.sloganText{ + font-size:1.4em; + font-style:italic; + font-weight:200; + + margin-top:.3em; + margin-bottom:1.3em; + + letter-spacing: .2em; +} + +.navigationBarSeparator{ + + width:90%; + + border-bottom:.8px solid #272727; + + margin-top:0em; + margin-bottom:0em; +} + +.navigationBar{ + + display:flex; + flex-direction:row; + justify-content:center; + align-items:center; + flex-wrap:wrap; + + margin-top:.3em; + margin-bottom:.3em; + + width:90%; +} + +.navigationBarItem{ + + display:flex; + flex-direction:row; + justify-content:center; + align-items:center; +} + +.navigationBarLink{ + + color:black; + font-weight:800; + + font-size:1.2em; + + text-decoration:none; + + padding-top:.2em; + padding-left:1em; + padding-right:1em; + padding-bottom:.2em; + + width:100%; + + text-align:center; +} + +.navigationBarLink:hover{ + + text-decoration:none; + cursor: pointer; +} + +.navigationBarHeart{ + + width:1.5em; + + flex-grow:1; + + font-size:.9em; +} + +.chooseLanguageButtonsDiv{ + + display:flex; + flex-direction:row; + flex-wrap:wrap; + justify-content:center; + align-content: flex-start; + + width:70%; +} + +.seekiaIsHeading{ + + margin-top:1.8em; + margin-bottom:1.2em; + + padding-top:0em; + padding-bottom:0em; +} + +.pageHeading{ + + font-size:1.8em; + + margin-top:1.5em; + margin-bottom:.8em; + + padding-top:0em; + padding-bottom:0em; +} + +.chooseLanguageButton{ + + color:white; + text-decoration:none; + font-weight:bold; + + margin:.5em; + padding:1em; + background-color:blue; + border-radius:.5em; + +} + +.blueDownloadButton{ + + color:white; + text-decoration:none; + font-weight:bold; + + padding-top: 1em; + padding-bottom: 1em; + padding-left: 1em; + padding-right: 1em; + + background-color: blue; + border-radius:1em; +} + +.separator{ + + color: black; + width: 70%; + + border-style:solid; + border-color:black; + + border-top:0em; + border-bottom:1px solid black; + border-left:0em; + border-right:0em; +} + +.linebreak{ + margin-top:0.5em; +} + +.thinlinebreak{ + margin-top:1.5em; + margin-bottom:1em; +} + + +.homePageScreenshot{ + width:60%; + border:solid 0.15em; + margin:1.5em; +} + +.ancestryCompositionScreenshot{ + width:50%; + border:solid 0.15em; + margin:1.5em; +} + +.racialSimilarityScreenshot{ + width:50%; + border:solid 0.15em; + margin:1.5em; +} + +.offspringDiseaseProbabilitiesScreenshot{ + width:60%; + border:solid 0.15em; + margin:1.5em; +} + +.totalDiseaseRiskScreenshot{ + width:60%; + border:solid 0.15em; + margin:1.5em; + +} + +.browseMatchesScreenshot{ + width:25%; + border:solid 0.15em; + margin:1.5em; + +} + +.operatingSystemBox{ + + display:flex; + flex-direction:column; + justify-content:center; + align-content:center; + align-items:center; + + width:50%; + + margin-top:.8em; + margin-bottom:.8em; + + border-radius:0.5em; + + padding-top:1.5em; + padding-bottom:1em; + padding-left:0.5em; + padding-right:0.5em; + + background-color:gainsboro; + + text-align:center; +} + +.operatingSystemName{ + + font-size:1.2em; + + margin-top:1em; + margin-bottom:1em; +} + +.operatingSystemLogo{ + + width:3em; +} + +.codeblock{ + + padding-top:0.5em; + padding-bottom:0.5em; + padding-left:0.5em; + padding-right:0.5em; + + font-size:1.3em; + + margin-top:0.5em; + margin-bottom:0.5em; + + background-color:lightgray; +} + +.readTheWhitepaperRow{ + + display:flex; + flex-direction:row; + justify-content:center; + align-content:center; + align-items:center; + + text-decoration:none; + + border-radius:2em; + + padding-top:1em; + padding-bottom:1em; + padding-left:3em; + padding-right:3em; + + background-color:gainsboro; +} + + +.whitepaperIcon{ + + width:4em; +} + +.readTheWhitepaperLink{ + + font-style:italic; +} + +.aboutPageDescriptionSection{ + + width:70%; + + text-align:center; +} + +.aboutWebsiteBox{ + + display:flex; + flex-direction:column; + justify-content:center; + align-content:center; + align-items:center; + + background-color:gainsboro; + + width:60%; + + border-radius:1em; + + padding-top:1em; + padding-bottom:0.6em; + + margin-top:.5em; + margin-bottom:.5em; +} + + +.archiveReleaseBox{ + + display:flex; + flex-direction:column; + justify-content:center; + align-content:center; + align-items:center; + + background-color:gainsboro; + + margin-top:1em; + margin-bottom:1em; + + padding-top:1em; + padding-bottom:1.5em; + + border-radius:1em; + + width:80%; +} + +.archiveReleaseBoxSeparator{ + + width:80%; +} + +.codebergLogo{ + + width:5em; + + margin-bottom:1em; +} +.contactIcon{ + + width:5em; + margin-bottom:1em; +} + + diff --git a/timestamps/ReadMe.md b/timestamps/ReadMe.md new file mode 100644 index 0000000..fb5a459 --- /dev/null +++ b/timestamps/ReadMe.md @@ -0,0 +1,59 @@ +# Timestamps + +OpenTimestamps is used to timestamp SeekiaWebsite commits. + +Visit [OpenTimestamps.org](https://www.opentimestamps.org) to learn more. + +Timestamps are useful to provide evidence that a commit was authored by a specific person. + +Timestamps can defend against patent trolls by proving that the patent troll was not the first inventor of an idea. + +Timestamps can also protect developers from wrongful accusations of plagiarism. + +Timestamping commits is optional. + +When someone timestamps a commit on a branch in which your commit has already been merged, your commit will be timestamped as well. + +## How to Timestamp Commits + +##### 1. Install the OpenTimestamps client. +Link: [Github.com/opentimestamps/opentimestamps-client](https://github.com/opentimestamps/opentimestamps-client) + +##### 2. Create a file containing the hex encoded commit hash. + +The name of this file should be the commit hash. + +Example: 34169c1384cd725d8ab580b6569fcd7276cb93e8.txt + +You can view recent commit hashes with the command `git log`. + +##### 3. Timestamp the file + +Use the command `ots stamp filename.txt`. + +##### 4. Wait for the timestamp to be included in the Bitcoin blockchain. + +This usually takes several hours. + +##### 5. Upgrade the timestamp + +Use the command `ots upgrade filename.txt.ots`. + +This command upgrades the timestamp to be locally verifiable. + +This command will tell you if the timestamp has been confirmed in the Bitcoin blockchain. + +##### 6. Push your commit to the SeekiaWebsite repository. + +You don't have to wait for the timestamp to confirm before committing unless you are paranoid about bad actors. + +##### 7. Push another commit which adds your .txt and .txt.ots file to the timestamps/Commits folder. + +You can do this at a later date. You can upload timestamps in batches. + +Both files should be in their own folder named after the commit hash. + +## How To Verify Commit Timestamps + +*TODO* + diff --git a/translation/translation.go b/translation/translation.go new file mode 100644 index 0000000..49d034e --- /dev/null +++ b/translation/translation.go @@ -0,0 +1,62 @@ +package translation + +import "errors" + +// English == en +// Spanish == es + +func GetTranslationsMap(languageCode string)(map[string]string, error){ + + switch languageCode{ + + case "en":{ + + languageMap := map[string]string{ + "BeRaceAware": "Be Race Aware", + "SeekiaIsDescription": "Seekia is a race aware mate discovery network.", + "Language": "Language", + "CurrentLanguage": "English", + "ChooseLanguage": "Choose Language", + "Download": "Download", + "Home": "Home", + "About": "About", + "Contribute": "Contribute", + "Archive": "Archive", + "TheCureToRacialLoneliness": "The Cure To Racial Loneliness", + "BeGeneticsAware": "Be Genetics Aware", + "BreedInAEugenicManner": "Breed In A Eugenic Manner", + "BrowseForFree": "Browse For Free", + "OpenSource": "Open Source", + } + + return languageMap, nil + } + + case "es":{ + + languageMap := map[string]string{ + "BeRaceAware": "TODO", + "SeekiaIsDescription": "TODO", + "Language": "Lengua", + "CurrentLanguage": "Español", + "ChooseLanguage": "TODO", + "Download": "TODO", + "Home": "TODO", + "About": "TODO", + "Contribute": "TODO", + "Archive": "TODO", + "TheCureToRacialLoneliness": "TODO", + "BeGeneticsAware": "TODO", + "BreedInAEugenicManner": "TODO", + "BrowseForFree": "TODO", + "OpenSource": "TODO", + } + + return languageMap, nil + } + } + + return nil, errors.New("GetLanguageMap called with invalid languageCode: " + languageCode) +} + +