Proyek ini bertujuan untuk menciptakan sebuah sistem penyimpanan file secara online yang berbasis pada ExpressJS, PostgreSQL, dan Google Firebase Storage untuk back-end, dan react untuk front-end.
User dapat melakukan register dan login akun. Untuk menangani session, digunakan JWT (JSON Web Token) yang akan diberikan pada saat login, serta akan digunakan untuk verifikasi identitas user selama berada di website.
Setelah login, user dapat melakukan berbagai hal, seperti melakukan upload, download, delete, serta mencari file. Selain itu, mereka juga dapat membuat folder baru untuk memudahkan penyimpanan file.
Tabel ini digunakan untuk menyimpan data dari user yang telah mendaftar, yakni terdiri dari
-
usernamePrimary key dariuserTable -
hashedPasswordBerisi password yang sudah di-hash serta di-salt menggunakanbcrypt -
namaBerisi nama asli dari user -
personalfolderBerisi ID folder root yang spesifik untuk masing-masing user. User yang baru mendaftar dapat mulai melakukan upload dan create new folder pada folder root tersebut.
Tabel ini digunakan untuk menyimpan data-data dari file yang telah tersimpan, yakni terdiri dari
-
fileIdPrimary key dari tabelfiles. Nilainya digenerasikan menggunakannanoid -
namaFileBerisi nama file. Ia akan mengikuti nama dari file yang diupload oleh user -
skemaAksesBernilaiFreeAccessatauRestricted. File denganFreeAccessdapat diakses oleh seluruh pengguna, sedangkanRestrictedakan membatasi akses pada user pemilik saja. -
ukuranBerisi ukuran file yang diupload dalam satuan bytes -
tanggalUploadBerisi tanggal di-upload-nya file -
directoryIdBerisi ID folder yang menyimpan file terkait -
userPemilikBerisi username pemilik file -
fileLinkBerisi link penyimpanan file pada Google Firebase Storage.
Tabel ini digunakan untuk menyimpan data-data dari folder yang ada pada sistem, yakni terdiri dari
-
folderIdPrimary key dari tabelfolder. Nilainya digenerasikan menggunakannanoid -
namaFolderBerisi nama folder -
skemaAksesBernilaiFreeAccessatauRestricted. Folder denganFreeAccessdapat dibuka oleh seluruh pengguna, sedangkanRestrictedakan membatasi akses pada user pemilik saja. -
tanggalPembuatanBerisi tanggal dibuatnya folder -
rootFolderIdBerisi folder parent yang menyimpan folder terkait. Terdapat pengecualian untuk personal folder, dimana nilairootFolderIdakan bernilai sama denganfolderId-nya sendiri. -
userPemilikBerisi username pemilik folder


