Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVP / Prototype TODOs #1

Closed
37 tasks done
bitspittle opened this issue Jul 25, 2021 · 1 comment
Closed
37 tasks done

MVP / Prototype TODOs #1

bitspittle opened this issue Jul 25, 2021 · 1 comment
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@bitspittle
Copy link
Collaborator

bitspittle commented Jul 25, 2021

Misc

  • Figure out how to use markdown task lists
  • Finalize the name
  • Add a README with basic instructions

Web Compose investigation

  • Create a project where a multiplatform JS library with composables is consumed by a JS application
  • Figure out how to get hot reload to work automatically. (Answer: ./gradlew jsRun --continuous, plus lots of interesting options in https://kotlinlang.org/docs/js-ir-compiler.html)
  • Do we lean into the CSS approach as embraced by Web Compose, or try to mimic Jetpack Compose? Need to experiment with what it means to make a regular app and a website with kobweb.
  • Figure out how to discover all classes that subclass another class (e.g. HomePage which inherits from Page). This may need to be magically done by kobweb, maybe with KotlinPoet?
  • Will compile times be a major issue? (They're not great, but they're not the end of the world. ~1-2 seconds)

Kobweb (Binary)

  • Set up arg parser
  • Figure out how to get hot reload to work automatically.
  • Add support for "kobweb create --site --use-markdown" when run inside an empty folder
  • Figure out how to strip out classes from the final binary, to reduce the final html JS
  • Add support for "kobweb run --dev" when run inside a kobweb project
  • Add support for "kobweb build" which should generate a static site -- Note: this can be done by running chrome in headless, e.g. google-chrome --headless --disable-gpu --dump-dom http://localhost:8080/

Kobweb (Core)

  • Create App and Page classes, use them in a project
  • Use @page annotation instead of Page base class?
  • Handle routing using navigation + show in URL bar (Refresh should keep you on the active page)
  • Get markdown plugin working
  • API routes with shared types (e.g. "api/hello" defined in jvmMain returns a HelloMsg defined in commonMain and read by a page defined in jsMain)
  • Audit all markdown nodes (e.g. code blocks)
  • PageContext via provider, available in pages, includes "params: Map<String, String>" for now, and a home for markdown data if relevant
  • Allow markdown to reference code ${SomeComponent()}

Kobweb Silk

  • Figure out UI theming
  • Figure out dynamic color mode
  • Add Flex component
  • Add Link component
  • Can we avoid creating a Link class in kobweb.silk if we use css variables instead?
  • Shapes
  • Add icon support (React Icons?)
  • Add a canvas widget
  • Save color mode across site runs #53
  • Breakpoints

Site

  • Create an explicit site runner for now (will eventually be handled by kobweb)
  • Create a hello world app that autoloads when user changes code
  • Create a hello world app with two pages that can link to each other ("/" and "/about")
  • Move site runner logic into kobweb
  • Create a sample app
@bitspittle bitspittle self-assigned this Jul 25, 2021
@bitspittle bitspittle pinned this issue Sep 21, 2021
@bitspittle bitspittle added this to the 1.0 milestone Oct 1, 2021
@bitspittle bitspittle added the enhancement New feature or request label Oct 1, 2021
@bitspittle
Copy link
Collaborator Author

bitspittle commented Nov 29, 2021

I feel like there should be more fanfare, but, um, looks like 0.6.5 is going to be an MVP release. Hooray.

More bugs to fix of course, we've still got a climb to 1.0, but we'll use normal github issue tracking from now on.

@bitspittle bitspittle unpinned this issue Nov 29, 2021
bitspittle added a commit that referenced this issue Feb 14, 2022
This is useful for github pages, which put your site under a
subfolder under a domain, e.g.

https://<user>.github.io/<project>/

You could also potentially host multiple sites on a single domain
underneath various subdirs, e.g.

https://yoursite.com/a/  <- serves index.html from site #1
https://yoursite.com/b/  <- serves index.html from site #2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant