Skip to content

Commit eb7e09f

Browse files
Bruzcodex
andauthored
refresh landing, branding, and docs for trading focus (#46) (#47)
* docs(landing): refresh contribution and project guidance * build(tradinggoose): adjust dev and image settings * feat(tradinggoose): rebrand metadata and AI reference content * fix(landing): tighten responsive layout and preview hydration * feat(tradinggoose): clarify llms reference canonical repo * chore(public): remove obsolete assets * docs(readme): retitle google ai badge * feat(landing): refresh hero ai prompt copy --------- Co-authored-by: Codex <codex@openai.com>
1 parent 0b02962 commit eb7e09f

99 files changed

Lines changed: 957 additions & 1133 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODE_OF_CONDUCT.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# TradingGoose Studio Code of Conduct
2+
3+
## Our Commitment
4+
5+
TradingGoose Studio is an open-source project for technical LLM trading workflows.
6+
We want the project to be a professional, respectful, and useful place for
7+
developers, researchers, traders, designers, and contributors of all experience
8+
levels.
9+
10+
Maintainers and contributors commit to making participation in the TradingGoose
11+
community harassment-free for everyone, regardless of age, body size,
12+
disability, ethnicity, sex characteristics, gender identity and expression,
13+
level of experience, education, socio-economic status, nationality, personal
14+
appearance, race, religion, or sexual identity and orientation.
15+
16+
## Expected Behavior
17+
18+
Examples of behavior that strengthen the TradingGoose community include:
19+
20+
- Treating other contributors with respect, patience, and professionalism
21+
- Critiquing ideas, code, and decisions without attacking people
22+
- Giving clear, actionable feedback in issues, pull requests, discussions, and chat
23+
- Sharing context, reproduction steps, and evidence when reporting bugs or disagreements
24+
- Assuming good intent first and asking clarifying questions before escalating
25+
- Respecting user privacy, project security, and confidential information
26+
- Helping keep discussion focused, technically useful, and welcoming to newcomers
27+
28+
## Unacceptable Behavior
29+
30+
Examples of unacceptable behavior include:
31+
32+
- Harassment, intimidation, threats, discrimination, or hate speech
33+
- Trolling, personal attacks, dogpiling, or deliberately inflammatory behavior
34+
- Sexualized language, imagery, or unwanted sexual attention
35+
- Publishing another person's private information without explicit permission
36+
- Sharing credentials, API keys, tokens, account access, or sensitive financial data
37+
- Abusive behavior in code review, issue triage, support channels, or community chat
38+
- Impersonation, spam, or repeated off-topic disruption of community spaces
39+
40+
## Maintainer Responsibilities
41+
42+
Project maintainers are responsible for clarifying and enforcing this Code of
43+
Conduct. They may remove, edit, or reject comments, commits, code, wiki edits,
44+
issues, pull requests, discussions, or other contributions that are not aligned
45+
with this policy.
46+
47+
Maintainers will aim to act fairly, consistently, and proportionally. When
48+
appropriate, they will communicate moderation decisions and next steps.
49+
50+
## Scope
51+
52+
This Code of Conduct applies across TradingGoose community spaces, including:
53+
54+
- This GitHub repository and related repositories
55+
- Issues, pull requests, discussions, and code review
56+
- Documentation sites and examples maintained by the project
57+
- Official Discord, social accounts, and other project-managed communication channels
58+
- Events, demos, livestreams, or public conversations where someone is representing TradingGoose
59+
60+
## Reporting
61+
62+
If you experience or witness behavior that violates this Code of Conduct, report
63+
it to the maintainers at <bruzzz@tradinggoose.ai>.
64+
65+
Please include relevant context when possible:
66+
67+
- What happened
68+
- Where it happened
69+
- Links, screenshots, or logs if available
70+
- Whether there is any immediate safety or security concern
71+
72+
Reports will be reviewed promptly and handled as confidentially as practical.
73+
We will prioritize the safety and privacy of the reporter and affected parties.
74+
75+
## Enforcement Guidelines
76+
77+
Maintainers may respond with any action they consider appropriate, including:
78+
79+
1. Private clarification or warning
80+
2. Request to stop specific behavior
81+
3. Removal of content or comments
82+
4. Temporary restriction from project spaces
83+
5. Permanent ban from some or all project spaces
84+
85+
The response will depend on severity, pattern of behavior, impact on the
86+
community, and any security or privacy implications.
87+
88+
## Attribution
89+
90+
This policy is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
91+
version [2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,47 @@
11
## Summary
2-
Brief description of what this PR does and why.
2+
<!-- What changed? Keep this concrete. -->
33

4-
Fixes #(issue)
4+
## Why
5+
<!-- Why is this change needed? What problem does it solve? -->
56

6-
## Type of Change
7-
- [ ] Bug fix
8-
- [ ] New feature
9-
- [ ] Breaking change
10-
- [ ] Documentation
11-
- [ ] Other: ___________
7+
## Affected Areas
8+
<!-- Check all that apply. -->
9+
- [ ] `apps/tradinggoose`
10+
- [ ] `apps/docs`
11+
- [ ] `packages/*`
12+
- [ ] Workflows / execution
13+
- [ ] Realtime / sockets
14+
- [ ] Market data / charting
15+
- [ ] Dev tooling / CI / infra
16+
- [ ] Documentation only
17+
- [ ] Other:
1218

13-
## Testing
14-
How has this been tested? What should reviewers focus on?
19+
## Issue Links( if any )
20+
<!-- Example: Fixes #123 -->
21+
22+
## Validation
23+
<!-- List the exact commands you ran and the result. -->
24+
```bash
25+
# example
26+
bun run test
27+
bun run type-check
28+
```
29+
30+
## Risk / Rollout Notes
31+
<!-- Call out breaking changes, rollout concerns, follow-up work, or backout plan. -->
32+
33+
## Config / Data Changes
34+
<!-- Delete lines that do not apply. -->
35+
- Env vars added or changed:
36+
- Database schema or migration impact:
37+
- External services or provider behavior changed:
38+
39+
## Screenshots / Video
40+
<!-- Required for visible UI changes. Include before/after when useful. -->
1541

1642
## Checklist
17-
- [ ] Code follows project style guidelines
18-
- [ ] Self-reviewed my changes
19-
- [ ] Tests added/updated and passing
20-
- [ ] No new warnings introduced
21-
- [ ] I confirm that I have read and agree to the terms outlined in the [Contributor License Agreement (CLA)](./CONTRIBUTING.md#contributor-license-agreement-cla)
22-
23-
## Screenshots/Videos
24-
<!-- If applicable, add screenshots or videos to help explain your changes -->
25-
<!-- For UI changes, before/after screenshots are especially helpful -->
43+
- [ ] I kept the change focused and reviewed my own diff
44+
- [ ] I validated the change locally and documented the results above
45+
- [ ] I updated docs, examples, or copy if behavior/user-facing flows changed
46+
- [ ] I called out any env, schema, provider, or rollout impact
47+
- [ ] I did not include secrets, tokens, or private credentials in this PR

README.md

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</p>
1010

1111
<p align='center'>
12-
<a href="https://google.com/ai?q=I+am+using+TradingGoose-Studio+from+https%3A%2F%2Fgithub.qkg1.top%2FTradingGoose%2FTradingGoose-Studio.+How+do+I+automate+a+strategy+using+this+library" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/ASK%20google%20gemini-8E75B2?style=for-the-badge&logo=google%20gemini&logoColor=white" alt="Gemini"></a>
12+
<a href="https://google.com/ai?q=I+am+using+TradingGoose-Studio+from+https%3A%2F%2Fgithub.qkg1.top%2FTradingGoose%2FTradingGoose-Studio.+How+do+I+automate+a+strategy+using+this+library" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/ASK%20google%20AI-8E75B2?style=for-the-badge&logo=google%20gemini&logoColor=white" alt="Gemini"></a>
1313
<a href="https://perplexity.ai?q=I+am+using+TradingGoose-Studio+from+https%3A%2F%2Fgithub.qkg1.top%2FTradingGoose%2FTradingGoose-Studio.+How+do+I+automate+a+strategy+using+this+library" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/ASK%20perplexity-088F8F?style=for-the-badge&logo=perplexity&logoColor=000000" alt="Perplexity"></a>
1414
</p>
1515

@@ -29,6 +29,13 @@
2929
TradingGoose Studio is an **AI workflow platform for technical LLM trading**, it combines both technical + LLM analysis for your trading decision.
3030
It is built for analytics, research, charting, monitoring, and workflow automation.
3131

32+
> **Early Stage Notice**
33+
>
34+
> TradingGoose Studio is still in a very early development stage.
35+
> You should expect rough edges, incomplete features, and a meaningful number of bugs.
36+
> Breaking changes are normal at this stage and may happen very frequently, including on a near-weekly basis.
37+
> If you are building on top of the project, expect to update your setup, workflows, and integrations often.
38+
3239

3340

3441
<picture>
@@ -46,7 +53,7 @@ It is built for analytics, research, charting, monitoring, and workflow automati
4653

4754
### Requirements
4855

49-
- **Bun** v1.2+
56+
- **Bun** v1.3+
5057
- **Docker** (for PostgreSQL)
5158
- **Colima** or **Docker Desktop** (macOS)
5259

@@ -82,6 +89,23 @@ bunx drizzle-kit migrate --config=./drizzle.config.ts
8289
cd ../..
8390
bun run dev:full
8491
```
92+
93+
## Contributing
94+
95+
Pull requests are welcome.
96+
97+
If you want to improve TradingGoose Studio, fix a bug, tighten the docs, or ship
98+
an idea that makes the platform better for traders and builders, open a PR.
99+
Small, focused changes are preferred and easier to review.
100+
101+
This project is moving quickly and is expected to have bugs and frequent breaking
102+
changes. Contributors should expect the codebase, interfaces, and workflows to
103+
change often, sometimes week to week.
104+
105+
- Read the [Contributing Guide](.github/CONTRIBUTING.md) for setup, workflow, and PR expectations
106+
- Review the [Code of Conduct](.github/CODE_OF_CONDUCT.md) before participating in project spaces
107+
- Open an issue first if you want feedback on larger changes or architecture work
108+
85109
| Tech Stack | |
86110
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
87111
| Framework | <a href="https://nextjs.org/" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Next-black?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.JS"></a> |
@@ -130,5 +154,5 @@ terms that continue to apply to that directory.
130154
---
131155

132156
<p align="center">
133-
Built with ❤️ by the TradingGoose Team
157+
<b>HONK !</b>
134158
</p>

apps/tradinggoose/app/(landing)/components/feature/components/landing-canvas/landing-flow.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import { LandingNode } from './landing-block/landing-node'
88
import { CARD_WIDTH, type LandingCanvasProps } from './landing-canvas'
99
import { LandingEdge } from './landing-edge/landing-edge'
1010

11-
const nodeTypes = {
11+
const landingNodeTypes = {
1212
landing: LandingNode,
1313
landingLoop: LandingLoopNode,
1414
group: LandingLoopNode,
1515
}
1616

17-
const edgeTypes = { landingEdge: LandingEdge }
17+
const landingEdgeTypes = { landingEdge: LandingEdge }
1818

1919
/**
2020
* Props for the LandingFlow component
@@ -41,6 +41,9 @@ export function LandingFlow({
4141
const { setViewport, getViewport } = useReactFlow()
4242
const [rfReady, setRfReady] = React.useState(false)
4343
const [localNodes, setLocalNodes] = React.useState(nodes)
44+
// Stabilize across HMR re-evaluations — React Flow warns on ref change.
45+
const nodeTypes = React.useMemo(() => landingNodeTypes, [])
46+
const edgeTypes = React.useMemo(() => landingEdgeTypes, [])
4447

4548
// Update local nodes when props change
4649
React.useEffect(() => {

apps/tradinggoose/app/(landing)/components/feature/components/workflow-preview/workflow-preview-canvas.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,14 @@ import {
2828
import { resizeContainerNodes } from '@/widgets/widgets/editor_workflow/components/workflow-editor/canvas/node-position-utils'
2929
import { WorkflowRouteProvider } from '@/widgets/widgets/editor_workflow/context/workflow-route-context'
3030

31-
const nodeTypes = importedNodeTypes
32-
const edgeTypes = importedEdgeTypes
31+
// importedNodeTypes / importedEdgeTypes are module-level constants in
32+
// block-registry.ts. In dev, Turbopack HMR re-evaluates that module on any
33+
// edit to its transitive imports, producing a new object identity which
34+
// trips React Flow's nodeTypes-changed warning. In production these remain
35+
// stable. Kept aliased for call-site readability; actual stabilization
36+
// happens via useMemo inside WorkflowPreviewFlow.
37+
const nodeTypesImport = importedNodeTypes
38+
const edgeTypesImport = importedEdgeTypes
3339

3440
const LANDING_WORKSPACE_ID = 'landing-preview'
3541
const LANDING_WORKFLOW_ID = 'landing-workflow'
@@ -253,6 +259,11 @@ type WorkflowPreviewCanvasProps = {
253259
type WorkflowPreviewFlowProps = Omit<WorkflowPreviewCanvasProps, 'workflowKey'>
254260

255261
function WorkflowPreviewFlow({ workflowState, className }: WorkflowPreviewFlowProps) {
262+
// Capture types once per mount so the ref stays identical across re-renders
263+
// even if HMR rebuilds block-registry and swaps the imported object.
264+
const nodeTypes = useMemo(() => nodeTypesImport, [])
265+
const edgeTypes = useMemo(() => edgeTypesImport, [])
266+
256267
const previewSeed = useMemo(() => {
257268
const initialBlocks = workflowState.blocks
258269
const initialNodes = buildPreviewNodes(workflowState)

apps/tradinggoose/app/(landing)/components/feature/feature.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,14 @@ function FeatureRowSection({
106106
'card group group/feature relative isolate m-1 overflow-hidden rounded-lg bg-foreground/10 p-px transition-all duration-300 ease-in-out lg:col-span-2',
107107
contentOrder
108108
)}
109+
// useCardGlow() mutates --shine-x/--shine-y on this .card node
110+
// imperatively on every mousemove, and Framer Motion renders
111+
// initial `opacity: 0` as a string in SSR vs number on the client.
112+
// Both are known-benign mismatches; skip hydration diffing here.
113+
motionProps={{ suppressHydrationWarning: true }}
109114
>
110115
<div
116+
suppressHydrationWarning
111117
className='blob absolute top-0 left-0 h-[120px] w-[120px] rounded-full opacity-0 blur-xl transition-all duration-300 ease-in-out'
112118
style={{ backgroundColor: 'hsl(var(--primary) / 0.7)' }}
113119
/>
@@ -162,7 +168,7 @@ function FeatureRowSection({
162168
transition={{ duration: 0.75 }}
163169
delay={index * 0.12 + 0.15}
164170
className={cn(
165-
'flex min-h-[40vh] w-full lg:col-span-3 lg:h-full lg:min-h-0',
171+
'flex h-[60vh] min-h-[560px] w-full lg:col-span-3 lg:h-full lg:min-h-0',
166172
previewOrder,
167173
previewIsLeft ? 'lg:justify-start' : 'lg:justify-end'
168174
)}
@@ -202,7 +208,7 @@ export default function Feature() {
202208
/>
203209
</div>
204210

205-
<div className='mx-auto px-12 sm:px-6 lg:px-20 xl:px-24'>
211+
<div className='px-4 sm:px-6 lg:px-20 xl:px-24'>
206212
<div className='mx-auto max-w-3xl text-center'>
207213
<MotionPreset
208214
fade

apps/tradinggoose/app/(landing)/components/footer/footer.tsx

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Image from 'next/image'
22
import Link from 'next/link'
3-
import { DiscordIcon, GithubIcon, LinkedInIcon, xIcon as XIcon } from '@/components/icons/icons'
3+
import { DiscordIcon, GithubIcon } from '@/components/icons/icons'
44
import FooterHoverText from '@/app/(landing)/components/footer/footer-hover-text'
55
import { soehne } from '@/app/fonts/soehne/soehne'
66

@@ -72,24 +72,6 @@ export default function Footer({ fullWidth = false }: FooterProps) {
7272
>
7373
<DiscordIcon className='h-5 w-5' aria-hidden='true' />
7474
</a>
75-
<a
76-
href='https://x.com/simdotai'
77-
target='_blank'
78-
rel='noopener noreferrer'
79-
aria-label='X (Twitter)'
80-
className='transition-colors duration-300 hover:text-foreground'
81-
>
82-
<XIcon className='h-[18px] w-[18px]' aria-hidden='true' />
83-
</a>
84-
<a
85-
href='https://www.linkedin.com/company/tradinggoose/'
86-
target='_blank'
87-
rel='noopener noreferrer'
88-
aria-label='LinkedIn'
89-
className='transition-colors duration-300 hover:text-foreground'
90-
>
91-
<LinkedInIcon className='h-[18px] w-[18px]' aria-hidden='true' />
92-
</a>
9375
<a
9476
href='https://github.com/TradingGoose/TradingGoose-Studio'
9577
target='_blank'
@@ -119,8 +101,8 @@ export default function Footer({ fullWidth = false }: FooterProps) {
119101
</div>
120102
</div>
121103

122-
<div className='text-sm sm:max-w-[28rem] sm:self-start lg:items-end'>
123-
<div className='grid grid-cols-4 gap-x-8 gap-y-3 sm:gap-x-12'>
104+
<div className='order-first text-sm max-sm:text-center sm:max-w-[28rem] sm:self-start lg:order-none lg:items-end'>
105+
<div className='grid grid-cols-3 gap-x-8 gap-y-3 sm:grid-cols-4 sm:gap-x-12'>
124106
{productLinks.map((link) =>
125107
link.external ? (
126108
<a
@@ -149,7 +131,7 @@ export default function Footer({ fullWidth = false }: FooterProps) {
149131

150132
<div
151133
aria-hidden='true'
152-
className='-translate-x-1/2 -translate-y-8 -pt-8 sm:-pt-16 absolute left-1/2 z-0 w-full max-w-70 overflow-hidden'
134+
className='-translate-x-1/2 -translate-y-8 -pt-8 sm:-pt-16 absolute left-1/2 z-0 hidden w-full max-w-70 overflow-hidden sm:block'
153135
>
154136
<FooterHoverText text='HONK!' />
155137
<div

0 commit comments

Comments
 (0)