[{"title":"( 58 个子文件 198KB ) ExpenseOnRails:使用Next.js和Express构建的Expense Tracker Web应用程序-源码","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}]