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
-
username
Primary key dariuserTable
-
hashedPassword
Berisi password yang sudah di-hash serta di-salt menggunakanbcrypt
-
nama
Berisi nama asli dari user -
personalfolder
Berisi 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
-
fileId
Primary key dari tabelfiles
. Nilainya digenerasikan menggunakannanoid
-
namaFile
Berisi nama file. Ia akan mengikuti nama dari file yang diupload oleh user -
skemaAkses
BernilaiFreeAccess
atauRestricted
. File denganFreeAccess
dapat diakses oleh seluruh pengguna, sedangkanRestricted
akan membatasi akses pada user pemilik saja. -
ukuran
Berisi ukuran file yang diupload dalam satuan bytes -
tanggalUpload
Berisi tanggal di-upload-nya file -
directoryId
Berisi ID folder yang menyimpan file terkait -
userPemilik
Berisi username pemilik file -
fileLink
Berisi link penyimpanan file pada Google Firebase Storage.
Tabel ini digunakan untuk menyimpan data-data dari folder yang ada pada sistem, yakni terdiri dari
-
folderId
Primary key dari tabelfolder
. Nilainya digenerasikan menggunakannanoid
-
namaFolder
Berisi nama folder -
skemaAkses
BernilaiFreeAccess
atauRestricted
. Folder denganFreeAccess
dapat dibuka oleh seluruh pengguna, sedangkanRestricted
akan membatasi akses pada user pemilik saja. -
tanggalPembuatan
Berisi tanggal dibuatnya folder -
rootFolderId
Berisi folder parent yang menyimpan folder terkait. Terdapat pengecualian untuk personal folder, dimana nilairootFolderId
akan bernilai sama denganfolderId
-nya sendiri. -
userPemilik
Berisi username pemilik folder