-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCargo.toml
More file actions
154 lines (132 loc) · 4.36 KB
/
Cargo.toml
File metadata and controls
154 lines (132 loc) · 4.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
[workspace]
resolver = "2"
members = [
"crates/forge",
"crates/forge-core",
"crates/forge-macros",
"crates/forge-runtime",
"crates/forge-codegen",
"examples/with-svelte/minimal",
"examples/with-svelte/demo",
"examples/with-svelte/realtime-todo-list",
"examples/with-dioxus/minimal",
"examples/with-dioxus/demo",
"examples/with-dioxus/realtime-todo-list",
"benchmarks/app",
]
exclude = [
"packages/forge-dioxus",
]
[workspace.package]
version = "0.9.0"
edition = "2024"
rust-version = "1.92"
license = "MIT"
repository = "https://github.com/isala404/forge"
description = "Full-stack framework with PostgreSQL as the only infrastructure dependency"
keywords = ["framework", "postgresql", "full-stack", "backend", "web"]
categories = ["web-programming", "database"]
[workspace.dependencies]
# FORGE packages (use these for examples and internal crates)
# Note: The package is named "forgex" but the library is "forge" for cleaner imports
forge = { package = "forgex", path = "crates/forge" }
forge-core = { path = "crates/forge-core" }
forge-macros = { path = "crates/forge-macros" }
forge-runtime = { path = "crates/forge-runtime" }
forge-codegen = { path = "crates/forge-codegen" }
# Async runtime
tokio = { version = "1.48", features = ["full"] }
# Database
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "postgres", "uuid", "chrono", "json", "macros"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.9"
schemars = { version = "0.8", features = ["chrono", "uuid1"] }
jsonschema = "0.28"
# HTTP/WebSocket
axum = { version = "0.8", features = ["ws", "multipart"] }
tower = { version = "0.5", features = ["limit", "timeout", "util"] }
tower-http = { version = "0.6", features = ["cors", "trace", "compression-gzip"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
# Utilities
uuid = { version = "1.19", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.10"
bytes = "1.10"
futures-core = "0.3"
cron = "0.15"
thiserror = "2.0"
anyhow = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
tracing-opentelemetry = "0.28"
# OpenTelemetry
opentelemetry = { version = "0.27", features = ["trace", "metrics", "logs"] }
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio", "trace", "metrics", "logs"] }
opentelemetry-otlp = { version = "0.27", default-features = false, features = ["http-json", "reqwest-rustls", "trace", "metrics", "logs", "internal-logs"] }
opentelemetry-semantic-conventions = "0.27"
opentelemetry-appender-tracing = "0.27"
# Proc macros
syn = { version = "2.0", features = ["full", "extra-traits", "visit"] }
quote = "1.0"
inventory = "0.3"
sha2 = "0.10"
proc-macro2 = "1.0"
# SQL parsing
sqlparser = "0.54"
# Networking
ipnet = "2"
# Concurrent data structures
dashmap = "6"
# Testing
tokio-test = "0.4"
testcontainers = "0.27"
testcontainers-modules = { version = "0.15", features = ["postgres"] }
# Example dependencies
dotenvy = "0.15"
bcrypt = "0.17"
jsonwebtoken = "9"
rust-embed = "8"
mime_guess = "2"
which = "7"
[workspace.lints.rust]
unsafe_code = "deny"
dead_code = "deny"
[workspace.lints.clippy]
panic = "deny"
unimplemented = "deny"
unwrap_used = "deny"
indexing_slicing = "deny"
[profile.dev]
# Smaller debug info keeps incremental builds and target/ size in check.
# `line-tables-only` is enough for backtraces and panic locations.
debug = "line-tables-only"
split-debuginfo = "unpacked"
incremental = true
codegen-units = 256
[profile.dev.package."*"]
# Dependencies rarely need debug info for app development. Trims target/
# substantially without affecting workspace iteration.
debug = false
[profile.test]
debug = "line-tables-only"
incremental = true
codegen-units = 256
[profile.release]
lto = true
codegen-units = 1
strip = true
# Ad-hoc release builds (smoke tests, local benchmarks) don't need full LTO.
# Use with `cargo build --profile release-fast` to skip the LTO link stall.
[profile.release-fast]
inherits = "release"
lto = false
codegen-units = 16
strip = "debuginfo"
[patch.crates-io]
forgex = { path = "crates/forge" }
forge-core = { path = "crates/forge-core" }
forge-macros = { path = "crates/forge-macros" }
forge-runtime = { path = "crates/forge-runtime" }
forge-codegen = { path = "crates/forge-codegen" }