jsonresume / jsonresume.org

The mono repo that builds the homepage, utils, ui components, registry and anything else
https://jsonresume.org
48 stars 14 forks source link

reworking how template rendering works #92

Closed thomasdavis closed 1 month ago

thomasdavis commented 2 months ago

mostly just to support fs again. (which took way too long to figure out)

but the abstractions will make more sense nontheless

not ready for review: pr'ing to show the line of thinking

changeset-bot[bot] commented 2 months ago

⚠️ No Changeset found

Latest commit: c94d41e9baafc9ac94038e66941313e403cc5c56

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

vercel[bot] commented 2 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
jsonresume-org-homepage2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 9, 2024 2:25pm
jsonresume-org-registry ❌ Failed (Inspect) May 9, 2024 2:25pm
coderabbitai[bot] commented 2 months ago

Walkthrough

The recent updates focus on enhancing the functionality of a Next.js application for generating and handling resumes. Modifications include adjustments to webpack configurations, API route changes, and the introduction of new files for fetching, validating, and formatting resumes based on GitHub gists. Additionally, there's simplification in theme exports and an expansion in handling different file types and themes for resume formatting.

Changes

File Path Change Summary
apps/registry/next.config.js Updated webpack configuration to handle fs module and set webpack5: true. API route adjustment.
apps/registry/pages/[payload].js Added functions for static props, paths, and initial props in resume handling.
apps/registry/pages/api/... Introduced files for resume formatting and validation. Enhanced theme and formatter handling.
packages/.../index.js Simplified theme export in jsonresume-theme-spartacus.

[!WARNING]

Review ran into problems

Problems (1) * Git: Failed to clone repository. Please contact CodeRabbit support.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
thomasdavis commented 2 months ago

got stuck on this https://github.com/vercel/next.js/discussions/17269

PR in progress, only file worth checking out is apps/registry/pages/[payload].js

-1 nextjs

levino commented 2 months ago

What kind of URLs would you like to prerender?

levino commented 2 months ago

I just saw: You are using the pages router which is outdated. I suggest to use exclusively the app router. Then there also is no getStaticProps.

Even if you are using getStaticProps you cannot possibly want to generate a page for each possible username and theme. I think you should just server side render these pages.

levino commented 2 months ago

With the app router you can access the searchParams prop in the render function.

thomasdavis commented 2 months ago

Moving to the app router makes sense. I will migrate it all there tomorrow.

Been trying to furiously refactor code because I have some spare time at the moment.

The end goal of this PR is to get the registry template/theme rendering working inside of pages/ and then any extensions for resume.json, resume.yaml etc outputted in the api folder.

Which allows the templates to use nodejs libraries such as fs, and then to logically move pure functional lib like functions outside of the api folder.

levino commented 2 months ago

With next.js you are in serverless / lambda land. There is no file system. Using fs will never work properly because the code will be bundled and the bundler does not understand that the files which you will later load via fs are to be bundled as well. My recommendation: Just drop support for all the templates which use fs under the hood. I think this will never work properly.

thomasdavis commented 2 months ago

feel free to commit any code you want to my pr's, it don't bother me, i'm sure we both have adequate git-fu

thomasdavis commented 2 months ago

I know we've talked about the fs support before, and I lean towards what your thinking. Will share my reflections tomorrow.

levino commented 2 months ago

It is a question of requirements. I cannot decide that for you. I am just saying you would make your life easier if you lowered the bar. If I can be of help with some code, let me know and I will see what I can do, but I will not support fs. It is just too painful imo.

levino commented 2 months ago

58 is related

thomasdavis commented 1 month ago

Closing in favor of https://github.com/jsonresume/jsonresume.org/issues/58

Keep the branch alive for now