[WIP] A (somewhat barebones) atproto app for creating custom sites without hosting!

server: add env file

+3
.env
··· 1 + PORT=8000 2 + HOSTNAME=localhost 3 + DB_FILE_NAME=file:local.db
+3
.env.template
··· 1 + PORT=8000 2 + HOSTNAME=localhost 3 + DB_FILE_NAME=file:local.db
+2
.gitignore
··· 1 + node_modules/* 2 + local.db
+3 -2
deno.json
··· 1 1 { 2 2 "tasks": { 3 - "dev": "PORT=8000 deno run --watch --allow-net --allow-env=HOSTNAME,PORT,NODE_ENV src/index.ts", 3 + "dev": "PORT=8000 deno run --watch --allow-net --allow-env=HOSTNAME,PORT,NODE_ENV --env-file src/index.ts", 4 4 "lexgen": "deno run --allow-env --allow-sys --allow-read=. --allow-write=./src/lexicons --no-prompt @atcute/lex-cli generate -c ./lex.config.js && cat ./src/lexicons/index.ts | sed \"s/.js/.ts/\" > ./src/lexicons/index.ts" 5 5 }, 6 6 "imports": { ··· 8 8 "@atcute/atproto": "npm:@atcute/atproto@^3.1.4", 9 9 "@atcute/client": "npm:@atcute/client@^4.0.3", 10 10 "@atcute/lex-cli": "npm:@atcute/lex-cli@^2.2.0", 11 - "@atcute/lexicons": "npm:@atcute/lexicons@^1.1.1" 11 + "@atcute/lexicons": "npm:@atcute/lexicons@^1.1.1", 12 + "@libsql/client": "npm:@libsql/client@^0.15.15" 12 13 }, 13 14 "unstable": ["raw-imports"] 14 15 }
+165 -2
deno.lock
··· 5 5 "npm:@atcute/client@^4.0.3": "4.0.3", 6 6 "npm:@atcute/identity-resolver@^1.1.3": "1.1.3_@atcute+identity@1.1.0", 7 7 "npm:@atcute/lex-cli@^2.2.0": "2.2.0_@badrap+valita@0.4.6", 8 - "npm:@atcute/lexicons@^1.1.1": "1.1.1" 8 + "npm:@atcute/lexicons@^1.1.1": "1.1.1", 9 + "npm:@libsql/client@~0.15.15": "0.15.15" 9 10 }, 10 11 "npm": { 11 12 "@atcute/atproto@3.1.4": { ··· 75 76 "@badrap/valita" 76 77 ] 77 78 }, 79 + "@libsql/client@0.15.15": { 80 + "integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==", 81 + "dependencies": [ 82 + "@libsql/core", 83 + "@libsql/hrana-client", 84 + "js-base64", 85 + "libsql", 86 + "promise-limit" 87 + ] 88 + }, 89 + "@libsql/core@0.15.15": { 90 + "integrity": "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==", 91 + "dependencies": [ 92 + "js-base64" 93 + ] 94 + }, 95 + "@libsql/darwin-arm64@0.5.22": { 96 + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", 97 + "os": ["darwin"], 98 + "cpu": ["arm64"] 99 + }, 100 + "@libsql/darwin-x64@0.5.22": { 101 + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", 102 + "os": ["darwin"], 103 + "cpu": ["x64"] 104 + }, 105 + "@libsql/hrana-client@0.7.0": { 106 + "integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==", 107 + "dependencies": [ 108 + "@libsql/isomorphic-fetch", 109 + "@libsql/isomorphic-ws", 110 + "js-base64", 111 + "node-fetch" 112 + ] 113 + }, 114 + "@libsql/isomorphic-fetch@0.3.1": { 115 + "integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==" 116 + }, 117 + "@libsql/isomorphic-ws@0.1.5": { 118 + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", 119 + "dependencies": [ 120 + "@types/ws", 121 + "ws" 122 + ] 123 + }, 124 + "@libsql/linux-arm-gnueabihf@0.5.22": { 125 + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", 126 + "os": ["linux"], 127 + "cpu": ["arm"] 128 + }, 129 + "@libsql/linux-arm-musleabihf@0.5.22": { 130 + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", 131 + "os": ["linux"], 132 + "cpu": ["arm"] 133 + }, 134 + "@libsql/linux-arm64-gnu@0.5.22": { 135 + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", 136 + "os": ["linux"], 137 + "cpu": ["arm64"] 138 + }, 139 + "@libsql/linux-arm64-musl@0.5.22": { 140 + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", 141 + "os": ["linux"], 142 + "cpu": ["arm64"] 143 + }, 144 + "@libsql/linux-x64-gnu@0.5.22": { 145 + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", 146 + "os": ["linux"], 147 + "cpu": ["x64"] 148 + }, 149 + "@libsql/linux-x64-musl@0.5.22": { 150 + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", 151 + "os": ["linux"], 152 + "cpu": ["x64"] 153 + }, 154 + "@libsql/win32-x64-msvc@0.5.22": { 155 + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", 156 + "os": ["win32"], 157 + "cpu": ["x64"] 158 + }, 159 + "@neon-rs/load@0.0.4": { 160 + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==" 161 + }, 162 + "@types/node@24.2.0": { 163 + "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", 164 + "dependencies": [ 165 + "undici-types" 166 + ] 167 + }, 168 + "@types/ws@8.18.1": { 169 + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 170 + "dependencies": [ 171 + "@types/node" 172 + ] 173 + }, 174 + "data-uri-to-buffer@4.0.1": { 175 + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" 176 + }, 177 + "detect-libc@2.0.2": { 178 + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" 179 + }, 78 180 "esm-env@1.2.2": { 79 181 "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" 80 182 }, 183 + "fetch-blob@3.2.0": { 184 + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 185 + "dependencies": [ 186 + "node-domexception", 187 + "web-streams-polyfill" 188 + ] 189 + }, 190 + "formdata-polyfill@4.0.10": { 191 + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 192 + "dependencies": [ 193 + "fetch-blob" 194 + ] 195 + }, 196 + "js-base64@3.7.8": { 197 + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==" 198 + }, 199 + "libsql@0.5.22": { 200 + "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", 201 + "dependencies": [ 202 + "@neon-rs/load", 203 + "detect-libc" 204 + ], 205 + "optionalDependencies": [ 206 + "@libsql/darwin-arm64", 207 + "@libsql/darwin-x64", 208 + "@libsql/linux-arm-gnueabihf", 209 + "@libsql/linux-arm-musleabihf", 210 + "@libsql/linux-arm64-gnu", 211 + "@libsql/linux-arm64-musl", 212 + "@libsql/linux-x64-gnu", 213 + "@libsql/linux-x64-musl", 214 + "@libsql/win32-x64-msvc" 215 + ], 216 + "os": ["darwin", "linux", "win32"], 217 + "cpu": ["x64", "arm64", "wasm32", "arm"] 218 + }, 219 + "node-domexception@1.0.0": { 220 + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 221 + "deprecated": true 222 + }, 223 + "node-fetch@3.3.2": { 224 + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", 225 + "dependencies": [ 226 + "data-uri-to-buffer", 227 + "fetch-blob", 228 + "formdata-polyfill" 229 + ] 230 + }, 81 231 "picocolors@1.1.1": { 82 232 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 83 233 }, 84 234 "prettier@3.6.2": { 85 235 "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 86 236 "bin": true 237 + }, 238 + "promise-limit@2.7.0": { 239 + "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==" 240 + }, 241 + "undici-types@7.10.0": { 242 + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==" 243 + }, 244 + "web-streams-polyfill@3.3.3": { 245 + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" 246 + }, 247 + "ws@8.18.3": { 248 + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" 87 249 } 88 250 }, 89 251 "workspace": { ··· 92 254 "npm:@atcute/client@^4.0.3", 93 255 "npm:@atcute/identity-resolver@^1.1.3", 94 256 "npm:@atcute/lex-cli@^2.2.0", 95 - "npm:@atcute/lexicons@^1.1.1" 257 + "npm:@atcute/lexicons@^1.1.1", 258 + "npm:@libsql/client@~0.15.15" 96 259 ] 97 260 } 98 261 }