Skip to content

Latest commit

 

History

History
246 lines (244 loc) · 8.83 KB

TODO.org

File metadata and controls

246 lines (244 loc) · 8.83 KB

ingest data

from file

from db

Infer references

Infer references for tuples

Infer deprecations

from db with a command line tool

The tool should be a ‘quick view’ of an unfamiliar database, one that hasn’t yet been annotated with supplemental schema. The tool should parse command line args for the client config and db name. Then it should ingest the db, inferring references and deprecations.

process data into DataScript db

basic schema

with deprecations

with see-also

with references

with tuples

with tuple references

include tuple references in Referenced By

with derived aggregate/enum

with explicit aggregate/enum

CANCELED with attribute predicates

with entity specs

allow doc strings on collections

inspect data

index

aggregate table

referenced by

name

primary key?

type, with refs

comments

see also

special attributes

deprecated

sorted

enum table

referenced by

name

comments

see also

special attributes

deprecated

sorted

connections graph for one aggregate/enum

full graph

connections graph for one agregate/enum, force directed, including inbound references

pannable connections graph

keep arrow tips close to the target

toggle enums in diagrams

export data

to static DataScript db

to live HTML, with inlined data

to static HTML, with inlined JS and CSS

to svg

Done by Vega, see toolbox to upper right of diagram

refactoring

switch to just DataScript and reagent… don’t need re-frame or re-posh

why do we have both entity and attribute? aren’t they two names for the same thing?

fix :a within another :a on collection page: invalid DOM

try CSS purge

Promote :db/tupleAttrs to attribute references during `data/process`? It works OK to pull the attribute data later, by ident.

Convert CLJC to CLJS: no need to render from a clojure process

Move dev/examples.clj to dev/ingest/projects/mbrainz.clj and update README

Experiment with giving collections a compound :db/ident of [:aggregate :person]

So that you can transact several times.

Consider switching diagrams to GraphViz

See https://github.com/felixflores/datomic_schema_grapher for some ideas

documentation

terminology

collections, aggregates, enums, attributes, constants

supplemental schema

references, part-of, see-also, deprecated, collections (and db/doc)

tuple-references, tuple/position

in db, or not

derived or explicit

how to ingest data

dev/projects/* folders

:ingest alias

:datomic alias

add annotations

clj -A:ingest -m ingest.projects.mbrainz

clj -A:ingest -m ingest.files <file>*

clj -A:ingest:datomic -m ingest.projects.my-project

how to run local, live web page

generate schema database

yarn run html

yarn run css

yarn run watch-js

open https://localhost:8080

how to create standalone web page

generate schema database

yarn –prod run standalone

open target/standalone.html

how to host web page

generate schema database

yarn –prod run clean

yarn –prod run html

yarn –prod run css

yarn –prod run compile-js

upload assets/* to Netlify, or a server of your choice

acknowledgements

DataScript

reagent

oz

shadow

tailwindcss, postcss and purgecss

license

erd config

toggle attr and collection

hide attrs

show non-ref attrs?

replace diagram config dropdown and toggles with headlessui-reagent

revise documentation

  • split into several files?

README.md screenshots big picture links to further documentation

docs/installation-and-usage.md docs/sources.md docs/annotation.md docs/exploring-and-sharing.md docs/advanced-exploration.md docs/datomic-inference.md docs/troubleshooting.md

Fix usage from within a project

Problem: You can’t really use s-v from within another Clojure codebase. This is a problem because those codebases are closest to the original schema definition, client connection parameters etc. And more practially, because the DataScript DB is put in the project resources/, not s-v’s resources, meaning that resource/inline doesn’t work. Maybe? Needs research

Create way to build website with arbitrary db input.

CANCELED Create version of website that allows upload of s-v.db

convert to clojure tool

Unify CLI to a single invocation

many sources

many kinds of sources

  • files
  • dbs
  • functions, referenced by symbols
  • static data

db inferences

db exclusions (?)

output to standalone html

Rename standalone.html to schema-voyager.html, or make it configurable?

better branding of schema voyager

fix print-references

It fails with some cryptic message related to compiling js (!) Also check that docs for print-inferences (doc/datomic-inference.md) actually work

move away from yarn scripts

possibly a clojure.tools.build script would work

simplify spread of files

  • DONE slim down dev/
  • DONE move assets/ into resources/

CANCELED convert datomic (and hiccup?) deps to :optional

NOTE: I decided to keep them as is… If they’re loaded when using s-v directly, it’s hard to see how they’ll behave from a project.

Would this ensure they’re loaded when using s-v directly, but not when using from a project? And would this let us get rid of the :datmoic and :export aliases, and the dev directory/namespace? The dev directory also exists to support Netlify, so maybe not

Reorganize deps in deps.edn. What is really needed, and when?

development/live release standalone standalone with Datomic

CANCELED reintroduce quickstart, as a way of seeing full workflow

NOTE: decided not to do this because -X:cli standalone is the whole workflow now basically just -X:cli ingest followed by -X:export standalone

CANCELED consider renaming cli/standalone to standalone-html or just html

NOTE: going to leave it for now if it would read better in the docs

create a build script

run clj -X:build-template

Create tagged version

check that find-versions can actually find the tool

move resources/assets

Perhaps to src/css and src/html. They shouldn’t be distributed with lib so mostly they shouldn’t be in resources.

exclude unused resources from jar

Don’t want to create problems for other libs