[{"title":"(58个子文件198KB)ExpenseOnRails:使用Next.js和Express构建的ExpenseTrackerWeb应用程序-源码","children":[{"title":"ExpenseOnRails-main","children":[{"title":"frontend","children":[{"title":"pages","children":[{"title":"account","children":[{"title":"index.tsx <span style='color:#111;'>150B</span>","children":null,"spread":false}],"spread":true},{"title":"index.tsx <span style='color:#111;'>295B</span>","children":null,"spread":false},{"title":"transactions","children":[{"title":"index.tsx <span style='color:#111;'>165B</span>","children":null,"spread":false}],"spread":true},{"title":"dashboard","children":[{"title":"index.tsx <span style='color:#111;'>156B</span>","children":null,"spread":false}],"spread":true},{"title":"_document.tsx <span style='color:#111;'>1.67KB</span>","children":null,"spread":false},{"title":"profile","children":[{"title":"index.tsx <span style='color:#111;'>5.89KB</span>","children":null,"spread":false}],"spread":true},{"title":"register","children":[{"title":"index.tsx <span style='color:#111;'>3.60KB</span>","children":null,"spread":false}],"spread":true},{"title":"_app.tsx <span style='color:#111;'>472B</span>","children":null,"spread":false},{"title":"login","children":[{"title":"index.tsx <span style='color:#111;'>2.96KB</span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"redux","children":[{"title":"types.ts <span style='color:#111;'>474B</span>","children":null,"spread":false},{"title":"store.ts <span style='color:#111;'>656B</span>","children":null,"spread":false},{"title":"slices","children":[{"title":"user.ts <span style='color:#111;'>2.17KB</span>","children":null,"spread":false},{"title":"transactions.ts <span style='color:#111;'>3.42KB</span>","children":null,"spread":false},{"title":"account.ts <span style='color:#111;'>2.62KB</span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"utils","children":[{"title":"constants","children":[{"title":"index.ts <span style='color:#111;'>572B</span>","children":null,"spread":false}],"spread":true},{"title":"fetchOptions.ts <span style='color:#111;'>1.37KB</span>","children":null,"spread":false}],"spread":true},{"title":"public","children":[{"title":"favicon.ico <span style='color:#111;'>14.73KB</span>","children":null,"spread":false},{"title":"vercel.svg <span style='color:#111;'>1.08KB</span>","children":null,"spread":false}],"spread":true},{"title":"next-env.d.ts <span style='color:#111;'>75B</span>","children":null,"spread":false},{"title":"styles","children":[{"title":"globals.css <span style='color:#111;'>275B</span>","children":null,"spread":false},{"title":"Home.module.css <span style='color:#111;'>1.75KB</span>","children":null,"spread":false}],"spread":true},{"title":"components","children":[{"title":"Layout","children":[{"title":"index.tsx <span style='color:#111;'>1.79KB</span>","children":null,"spread":false},{"title":"SideNav.tsx <span style='color:#111;'>1.96KB</span>","children":null,"spread":false},{"title":"Header","children":[{"title":"index.tsx <span style='color:#111;'>753B</span>","children":null,"spread":false},{"title":"AccountMenu.tsx <span style='color:#111;'>1.97KB</span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"Form","children":[{"title":"ActionButton.tsx <span style='color:#111;'>1.11KB</span>","children":null,"spread":false},{"title":"FormOutline.tsx <span style='color:#111;'>1.11KB</span>","children":null,"spread":false},{"title":"LoadingCircle.tsx <span style='color:#111;'>561B</span>","children":null,"spread":false},{"title":"SubmitButton.tsx <span style='color:#111;'>537B</span>","children":null,"spread":false},{"title":"useInput.tsx <span style='color:#111;'>1.19KB</span>","children":null,"spread":false}],"spread":true},{"title":"Forbidden.tsx <span style='color:#111;'>513B</span>","children":null,"spread":false},{"title":"useSnackbar.tsx <span style='color:#111;'>2.00KB</span>","children":null,"spread":false},{"title":"useLoading.tsx <span style='color:#111;'>525B</span>","children":null,"spread":false}],"spread":true},{"title":"tsconfig.json <span style='color:#111;'>908B</span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'>1.54KB</span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'>386B</span>","children":null,"spread":false},{"title":"package-lock.json <span style='color:#111;'>321.39KB</span>","children":null,"spread":false},{"title":"package.json <span style='color:#111;'>637B</span>","children":null,"spread":false}],"spread":false},{"title":"backend","children":[{"title":"src","children":[{"title":"app.ts <span style='color:#111;'>1.56KB</span>","children":null,"spread":false},{"title":"utils","children":[{"title":"passportConfig.ts <span style='color:#111;'>1.74KB</span>","children":null,"spread":false},{"title":"typeExtensions.ts <span style='color:#111;'>122B</span>","children":null,"spread":false}],"spread":true},{"title":"models","children":[{"title":"Transaction.ts <span style='color:#111;'>1.35KB</span>","children":null,"spread":false},{"title":"index.ts <span style='color:#111;'>373B</span>","children":null,"spread":false},{"title":"Account.ts <span style='color:#111;'>1.37KB</span>","children":null,"spread":false},{"title":"User.ts <span style='color:#111;'>886B</span>","children":null,"spread":false}],"spread":true},{"title":"controllers","children":[{"title":"UserController.ts <span style='color:#111;'>3.08KB</span>","children":null,"spread":false},{"title":"TransactionController.ts <span style='color:#111;'>4.88KB</span>","children":null,"spread":false},{"title":"index.ts <span style='color:#111;'>2.29KB</span>","children":null,"spread":false},{"title":"AccountController.ts <span style='color:#111;'>2.56KB</span>","children":null,"spread":false}],"spread":true},{"title":"routes","children":[{"title":"auth.ts <span style='color:#111;'>3.70KB</span>","children":null,"spread":false},{"title":"index.ts <span style='color:#111;'>374B</span>","children":null,"spread":false},{"title":"api.ts <span style='color:#111;'>1.14KB</span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"tsconfig.json <span style='color:#111;'>5.66KB</span>","children":null,"spread":false},{"title":"package-lock.json <span style='color:#111;'>233.72KB</span>","children":null,"spread":false},{"title":"package.json <span style='color:#111;'>1.11KB</span>","children":null,"spread":false}],"spread":true},{"title":"README.md <span style='color:#111;'>81B</span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'>973B</span>","children":null,"spread":false},{"title":"package.json <span style='color:#111;'>685B</span>","children":null,"spread":false}],"spread":true}],"spread":true}]