Initial commit

This commit is contained in:
Oly 2023-11-16 08:52:14 +00:00
commit a46aa69b7b
39 changed files with 404 additions and 0 deletions

39
.gitignore vendored Normal file
View File

@ -0,0 +1,39 @@
**/classes
**/target
**/.artifacts
**/.cpcache
**/.DS_Store
**/.gradle
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/shelf
.idea/**/statistic.xml
.idea/dictionaries/**
.idea/libraries/**
# File-based project format
*.iws
*.ipr
# Cursive Clojure plugin
.idea/replstate.xml
*.iml
/example/example/**
artifacts
projects/**/pom.xml
# nrepl
.nrepl-port
# clojure-lsp
.lsp/.cache
# clj-kondo
.clj-kondo/.cache
# Calva VS Code Extension
.calva/output-window/output.calva-repl

1
bases/.keep Normal file
View File

@ -0,0 +1 @@

1
components/.keep Normal file
View File

@ -0,0 +1 @@

View File

@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {}
:aliases {:test {:extra-paths ["test"]
:extra-deps {}}}}

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,16 @@
(ns org.aplex.helpers.core
(:require
[clojure.string :as s]))
(defn map-replace
"Given a string with {:key} strings substitute the matching key in a hash map"
[text m]
(reduce
(fn [acc [k v]] (s/replace acc (str "{" k "}") (str v)))
text m))
(defn build-url [root-url path params]
(str root-url (map-replace path params)))
(defn attach-handler [hm fn]
(assoc hm :handler fn))

View File

@ -0,0 +1,18 @@
(ns org.aplex.helpers.interface
(:require
[org.aplex.helpers.core :as c])
(:import
(java.lang System)))
(defmacro load-default-env [env-var]
(System/getenv env-var))
(defn map-replace [text m]
(c/map-replace text m))
(defn build-url [root-url path params]
(c/build-url root-url path params))
(defn attach-handler [hm fn]
(c/attach-handler hm fn))

View File

@ -0,0 +1,6 @@
(ns org.aplex.helpers.interface-test
(:require [clojure.test :as test :refer :all]
[org.aplex.helpers.interface :as helpers]))
(deftest dummy-test
(is (= 1 1)))

View File

@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {}
:aliases {:test {:extra-paths ["test"]
:extra-deps {}}}}

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
(ns org.do.apis.mailchimp.interface)

View File

@ -0,0 +1 @@
oly@avocato.1708108:1668427537

View File

@ -0,0 +1,2 @@
(ns org.do.apis.mailchimp.v3.malli.core)

View File

@ -0,0 +1 @@
oly@avocato.1708108:1668427537

View File

@ -0,0 +1,6 @@
(ns org.aplex.rest-mailchimp.interface-test
(:require [clojure.test :as test :refer :all]
[org.aplex.rest-mailchimp.interface :as rest-mailchimp]))
(deftest dummy-test
(is (= 1 1)))

View File

@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {}
:aliases {:test {:extra-paths ["test"]
:extra-deps {}}}}

View File

@ -0,0 +1,38 @@
(ns org.aplex.rest-stability-ai.core
(:require [org.aplex.helpers.interface :as h]))
(def api-config (atom {:api-host "https://api.stability.ai"
:api-key "STABILITY_API_KEY"}))
(def api-host "https://api.stability.ai")
(def api-key "sk-t8dmTcOV2jOAALqJ4yjS8qEOgr4NZHumuHd3ppuMsQn9os2W")
(def default-authed-payload {:headers {"Authorization" (str "Bearer " api-key)
"content-type" "application/json"}})
(defn init-config [cfg]
(reset! api-config (merge @api-config cfg)))
(defn build-url [path]
(str api-host path))
(defn fetch-user-account []
(merge default-authed-payload
{:url (build-url "/v1/user/account")
:handler prn}))
(defn fetch-user-balance []
(merge default-authed-payload
{:url (build-url "/v1/user/balance")
:handler prn}))
(defn fetch-generation-text-to-image []
(merge default-authed-payload
{:url (build-url "/v1/user/balance")
:format :json
:response-format :json
:params {:text_prompts [{:text "A wooden hand crafted light house"
:weight 0.5}]}
:handler prn}))

View File

@ -0,0 +1,8 @@
(ns org.aplex.rest-stability-ai.interface
(:require [org.aplex.stability-ai.core :as c]))
(defn init-config [cfg] (c/init-config cfg))
(defn fetch-user-account [] (c/fetch-user-account ))
(defn fetch-user-balance [] (c/fetch-user-balance ))
(defn fetch-generation-text-to-image [required optional] (c/fetch-generation-text-to-image required optional))

View File

@ -0,0 +1,6 @@
(ns org.aplex.rest-stability-ai.interface-test
(:require [clojure.test :as test :refer :all]
[org.aplex.rest-stability-ai.interface :as rest-stability-ai]))
(deftest dummy-test
(is (= 1 1)))

View File

@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {}
:aliases {:test {:extra-paths ["test"]
:extra-deps {}}}}

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,39 @@
(ns org.aplex.stability-ai.core
(:require [org.aplex.helpers.interface :as h])
)
(def api-config (atom {:api-host "https://api.stability.ai"
:api-key "STABILITY_API_KEY"}))
(def api-host "https://api.stability.ai")
(def api-key "sk-t8dmTcOV2jOAALqJ4yjS8qEOgr4NZHumuHd3ppuMsQn9os2W")
(def default-authed-payload {:headers {"Authorization" (str "Bearer " api-key)
"content-type" "application/json"}})
(defn init-config [cfg]
(reset! api-config (merge @api-config cfg)))
(defn build-url [path]
(str api-host path))
(defn fetch-user-account []
(merge default-authed-payload
{:url (build-url "/v1/user/account")
:handler prn}))
(defn fetch-user-balance []
(merge default-authed-payload
{:url (build-url "/v1/user/balance")
:handler prn}))
(defn fetch-generation-text-to-image []
(merge default-authed-payload
{:url (build-url "/v1/user/balance")
:format :json
:response-format :json
:params {:text_prompts [{:text "A wooden hand crafted light house"
:weight 0.5}]}
:handler prn}))

View File

@ -0,0 +1,8 @@
(ns org.aplex.stability-ai.interface
(:require [org.aplex.stability-ai.core :as c]))
(defn init-config [cfg] (c/init-config cfg))
(defn fetch-user-account [] (c/fetch-user-account ))
(defn fetch-user-balance [] (c/fetch-user-balance ))
(defn fetch-generation-text-to-image [required optional] (c/fetch-generation-text-to-image required optional))

View File

@ -0,0 +1,6 @@
(ns org.aplex.stability-ai.interface-test
(:require [clojure.test :as test :refer :all]
[org.aplex.stability-ai.interface :as stability-ai]))
(deftest dummy-test
(is (= 1 1)))

34
deps.edn Normal file
View File

@ -0,0 +1,34 @@
{:paths ["development/src"]
:deps {
org.clojure/clojure {:mvn/version "1.11.1"}
djblue/portal {:mvn/version "0.49.1"}
no.cjohansen/portfolio {:mvn/version "2023.07.15"}
io.github.nextjournal/clerk {:mvn/version "0.15.957"}
refactor-nrepl/refactor-nrepl {:mvn/version "3.9.0"}
}
:aliases {:dev {:extra-paths ["development/src"]
:extra-deps {org.clojure/clojure {:mvn/version "1.11.1"}
djblue/portal {:mvn/version "0.49.1"}
no.cjohansen/portfolio {:mvn/version "2023.07.15"}
io.github.nextjournal/clerk {:mvn/version "0.15.957"}
refactor-nrepl/refactor-nrepl {:mvn/version "3.9.0"}
}}
:shadow-cljs-run
{:extra-deps {thheller/shadow-cljs {:mvn/version "2.25.2"}
cider/piggieback {:mvn/version "0.5.3"}}
:extra-paths ["development/src"]
:main-opts ["-m" "shadow.cljs.devtools.cli"]}
:test {:extra-paths []}
:poly {:main-opts ["-m" "polylith.clj.core.poly-cli.core"]
:extra-deps {polyfy/polylith
{:git/url "https://github.com/polyfy/polylith"
:sha "bddda87d2fb071e2b8488383a800d4a17989e766"
:deps/root "projects/poly"}}}}}

View File

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<title>Personal portfolio for olymk2</title>
<meta charset="utf-8" />
<meta content="#da532c" name="msapplication-TileColor" />
<meta content="#ffffff" name="theme-color" />
<link
href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.15.1/devicon.min.css"
rel="stylesheet"
type="text/css"
/>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
rel="stylesheet"
type="text/css"
/>
<link rel="stylesheet" href="./css/styles.css" type="text/css" />
<meta content="Personal portfolio" property="og:title" />
<meta
content="Portfolio of projects worked on past to present"
property="og:description"
/>
</head>
<body>
<div id="app"></div>
<script src="/cljs-out/base.js" type="application/javascript"></script>
<script src="/cljs-out/portfolio.js" type="application/javascript"></script>
</body>
</html>

1
development/src/.keep Normal file
View File

@ -0,0 +1 @@

View File

@ -0,0 +1,10 @@
(ns frontend.portfolio.core
(:require [portfolio.ui :as ui]))
(defn launch []
(ui/start!
{:config {:css-paths ["/css/styles.css"
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
"https://cdn.jsdelivr.net/gh/devicons/devicon@v2.15.1/devicon.min.css"]}}))

View File

@ -0,0 +1,59 @@
(ns src.frontend.portfolio.stability-ai
(:require ;[clj-http.client :as client]
[ajax.core :refer [GET POST]]
[portfolio.ui :as ui]
[portfolio.dumdom :as d]
[portfolio.dom :as r]))
;; api root paths shoudl not end in a slash
;; the payloads should be maps no coupling to http libraries
;; each api should have an init to set the api key and change the host along side any other config
(def api-host "https://api.stability.ai")
(def api-key "")
(def default-authed-payload {:headers {"Authorization" (str "Bearer " api-key)
"content-type" "application/json"}})
(defn build-url [path]
(str api-host path))
(GET (build-url "/v1/user/account")
(merge default-authed-payload
{:handler prn}))
(GET (build-url "/v1/user/balance")
(merge default-authed-payload
{:handler prn}))
(def temp-response (atom nil))
(POST (build-url "/v1/generation/stable-diffusion-v1-5/text-to-image")
(merge default-authed-payload
{:handler (fn [r]
(prn r)
(reset! temp-response r))
:format :json
:response-format :json
:params {:text_prompts [{:text "A wooden hand crafted light house"
:weight 0.5}]}
}))
(d/defscene image
[:div
[:img {:src (str "data:image/png;base64," (get (first (get @temp-response "artifacts")) "base64")) }]])
(d/defscene card
[:div.h-96.w-48.flex.justify-center.flex.col.rounded-full.border
[:div.w-48.h-48
[:img.object-contain.w-48.h-48.rounded-md
{:src (str "data:image/png;base64," (get (first (get @temp-response "artifacts")) "base64")) }]]
[:div "some text"]])
@temp-response

View File

@ -0,0 +1,7 @@
npx shadow-cljs server
npx tailwindcss -i ./development/resources/public/css/tailwind-styles.css -o ./development/resources/public/css/styles.css --watch
clj -Mshadow-cljs watch app
clj -Mshadow-cljs-run watch app

2
development/src/user.clj Normal file
View File

@ -0,0 +1,2 @@
(ns src.user)

12
package.json Normal file
View File

@ -0,0 +1,12 @@
{
"dependencies": {
"axe-core": "4.7.0",
"katex": "0.12.0",
"markdown-it": "12.3.2",
"markdown-it-block-image": "0.0.3",
"markdown-it-footnote": "3.0.3",
"markdown-it-texmath": "0.9.7",
"markdown-it-toc-done-right": "4.2.0",
"punycode": "2.1.1"
}
}

1
projects/.keep Normal file
View File

@ -0,0 +1 @@

7
readme.org Normal file
View File

@ -0,0 +1,7 @@
#+TITLE: aplex Api's
* Each library should have an init function to configur url tokens or anything else specific users
* Library's do not need to be complete as they can be expanded as sneeded
* There should be one function for each api route
* API libraries should just build the requests as maps.
* Validation should be seperate to the requests making it optional and written in a way to pipe the request into the validation.

15
shadow-cljs.edn Normal file
View File

@ -0,0 +1,15 @@
{:deps {:aliases [:dev]}
:dev-http {8080 ["development/resources/public/" "classpath:public"]}
:nrepl {:middleware [refactor-nrepl.middleware/wrap-refactor]}
:source ["development/src"]
:builds {:app {:output-dir "development/resources/public/cljs-out"
:asset-path "cljs-out"
:target :browser
:compiler-options {:infer-externs :auto :output-feature-set :es6}
:modules {:base {:entries []}
;; :app {:init-fn src.frontend.portfolio.core/launch
;; :depends-on #{:base}}
:portfolio {:init-fn frontend.portfolio.core/launch
:depends-on #{:base}}
}
:devtools {:after-load app.main/reload!}}}}

9
workspace.edn Normal file
View File

@ -0,0 +1,9 @@
{:top-namespace "org.aplex"
:interface-ns "interface"
:default-profile-name "default"
:compact-views #{}
:vcs {:name "git"
:auto-add false}
:tag-patterns {:stable "stable-*"
:release "v[0-9]*"}
:projects {"development" {:alias "dev"}}}