Commit Graph

2766 Commits (845b0f2073437992e16dba25420d40e2e53941a0)

Author SHA1 Message Date
Jaime Baez 1f4ba73da7 Add all server checks to CI - fix lint issues
CI will now run linter, type-checks and tests for the server.

All the lint issues have been fixed.
2022-09-08 11:07:27 +07:00
Alex Tran 853a65aef1
Up version for release 2022-09-07 15:26:29 +07:00
Alex 566039b93f
feat(web): add asset and album count info (#623)
* Get asset and album count

* Generate APIs

* Added asset count for each type

* Added api on the web

* Added info button for asset and album count to trigger getting info on hover

* Remove websocket event from photo page
2022-09-07 15:16:18 +07:00
Alex 1425f2ec78
Up server version 2022-09-05 23:44:42 +07:00
Alex b081eda76f
fix(server): change the `createdAt` and `modifiedAt` to the correct type in database (#591)
* Added migration files

* Remove type casting in sql query
2022-09-05 20:51:01 +07:00
Thanh Pham 7f6837c751
hotfix(server): skip exif extraction on duplicate file (#590)
* fix(server): skip exif extraction on duplicate file

* fix(server): typo

* chore(server): remvoe un-use code
2022-09-05 20:02:50 +07:00
Thanh Pham a467936e73
feat(server): de-duplication (#557)
* feat(server): remove un-used deviceAssetId cols.

* feat(server): return 409 if asset is duplicated

* feat(server): replace old unique constaint

* feat(server): strip deviceId in file path

* feat(server): skip duplicate asset

* chore(server): revert changes

* fix(server): asset test spec

* fix(server): checksum generation for uploaded assets

* fix(server): make sure generation queue run after migraion

* feat(server): remove temp file

* chore(server): remove dead code
2022-09-05 14:45:38 +07:00
Thanh Pham a81ef7497c
feat(server): support 3gpp format (#582)
* feat(server): support 3gpp format

* feat(web): add 3gp ext

* Support 3gp video format.

video/3gpp mimetype added to supported video format.

* feat(mobile): add tif ext

Co-authored-by: Alexandre Bouijoux <alexandre@bouijoux.fr>
2022-09-05 08:53:13 +07:00
Matthias Rupp caa7b07398
Show all albums an asset appears in on the asset viewer page (#575)
* Add route to query albums for a specific asset

* Update API and add to detail-panel

* Fix tests

* Refactor API endpoint

* Added alt attribute to img tag

Co-authored-by: Alex <alex.tran1502@gmail.com>
2022-09-05 08:50:20 +07:00
Alex 6976a7241e
Fixed upload asset to album in asset selection (#579)
* Fixed error uploading a file from album

* Fixed album selection mode show viewing asset stage

* Navigate back after uploading asset to album
2022-09-05 00:18:53 +07:00
Alex 552340add7
Feature - Implemented virtual scroll on web (#573)
This PR implemented a virtual scroll on the web, as seen in this article.

[Building the Google Photos Web UI](https://medium.com/google-design/google-photos-45b714dfbed1)
2022-09-04 08:34:39 +07:00
Thanh Pham c76f7804ab
feat(server): generate checksum for previous uploaded assets (#558)
* feat(server): generate checksum for previous uploaded assets

* fix(server): typo
2022-09-02 08:32:21 +07:00
Thanh Pham b80dca74ef
feat(server): calculate sha1 checksum (#525)
* feat(server): override multer storage

* feat(server): calc sha1 of uploaded file

* feat(server): add checksum into asset

* chore(server): add package-lock for mkdirp package

* fix(server): free hash stream

* chore(server): rollback this changes, not refactor here

* refactor(server): re-arrange import statement

* fix(server): make sure hash done before callback

* refactor(server): replace varchar to char for checksum, reserve pixelChecksum for future

* refactor(server): remove pixelChecksum

* refactor(server): convert checksum from string to bytea

* feat(server): add index to checksum

* refactor(): rollback package.json changes

* feat(server): remove uploaded file when progress fail

* feat(server): calculate hash in sequence
2022-08-31 09:27:17 +07:00
Thanh Pham e745cb5e4b
fix(server): parse all img formats and enrich metadata (#547)
* fix(server): use file path instead buffer to reduce memory usage

fix undefined exif data

* fix(server): parse all img formats

* feat(server): enrich metadata

* Format oneliner condition

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2022-08-28 15:43:31 +07:00
Thanh Pham dfaa4969da
Server - Fixed - Use file path instead buffer to reduce memory usage on EXIF extraction (#545)
fix undefined exif data
2022-08-28 11:09:24 +07:00
Alex f980a2f27a
Add asset repository and refactor asset service (#540)
* build endpoint to get asset count by month

* Added asset repository

* Added create asset

* get asset by device ID

* Added test for existing methods

* Refactor additional endpoint

* Refactor database api to get curated locations and curated objects

* Refactor get search properties

* Fixed cookies parsing for websocket

* Added API to get asset count by time group

* Remove unused code
2022-08-26 22:53:37 +07:00
Alex a09bba454c
Pump version for release 2022-08-26 10:57:12 +07:00
Alex 87f7b0849a
Added migration down for change exif file type 2022-08-26 09:13:11 +07:00
Alex 4596a8ee01
Change fileSizeInByte to bigint from int to handle large size (#534) 2022-08-26 09:07:59 +07:00
Alex db2ed2d881
Migrate SvelteKit to the latest version `431` (#526) 2022-08-24 21:10:48 +07:00
Thanh Pham 3b55cdc0be
refactor(server): move constant into common package (#522)
* refactor(server): move constant into common package

* refactor(server): re-arrange import statement in microservice module

* refactor(server): move app.config into common package

* fix(server): e2e testing
2022-08-23 07:34:21 +07:00
Thanh Pham ba2cda8955
feat(server): support tiff uploading (#513)
* feat(server): suport tiff uploading

* remove unused variable

Co-authored-by: Alex <alex.tran1502@gmail.com>
2022-08-22 12:49:17 +07:00
Alex 13bb6d469b
Pump version for release 2022-08-21 09:56:52 +07:00
Thanh Pham 7f9f825589
fix(server): correct media info (#508)
* fix(server): correct media info

* fix(server): video metadata
2022-08-20 22:58:47 +07:00
Thanh Pham 1e29ff322d
build(server): minimal container (#506)
* build(server): update Dockerfile

* build(server): fix dockerfile

* build(machine-learning): multiple build stages

* build(server): update Dockerfile
2022-08-20 21:19:02 +07:00
Thanh Pham 9c30d58b10
feat(server): preserve caption fields and extract mediainfo for video (#505)
* feat(server): preserve caption fields and extract mediainfo for video

* Fixed Geocoding missing info leads to fail EXIF extraction for the whole file

Co-authored-by: Alex <alex.tran1502@gmail.com>
2022-08-20 16:31:37 +07:00
Alex 068d06b9ee
Add x-adobe-dng to support file type (#504) 2022-08-20 07:50:58 +07:00
Thanh Pham 0cf7606ec9
fix(server): remove albumThumbnailAssetId when album is empty (#495) 2022-08-19 11:47:14 +07:00
Alex Tran 4805d86a7c pump version 2022-08-18 15:01:45 +07:00
Thanh Pham 3aa6ee0320
feat: remove webp on asset deleted as well (#489)
* fix(server): remove webp file on asset deleted

* chore(server): job not fail when file not found
2022-08-18 08:25:03 +07:00
Thanh Pham cdb0aa00d8
feat(server, microservices): add bull prefix (#490) 2022-08-18 08:24:07 +07:00
Alex 9642ad2820
Fixed Websocket not getting correct data on mobile 2022-08-15 23:43:12 +07:00
Alex 86f780871c
Fixed different lettercases in email create different user (#470)
* Fixed different lettercases in email create different user

* Fixed test
2022-08-15 19:11:08 +07:00
Alex c1b22125fd
Add mobile dark mode and user setting (#468)
* styling light and dark theme

* Icon topbar

* Fixed app bar title dark theme

* Fixed issue with getting thumbnail for things

* Refactor sharing page

* Refactor scroll thumb

* Refactor chip in auto  backup indiation button

* Refactor sharing page

* Added theme toggle

* Up version for testflight build

* Refactor backup controller page

* Refactor album selection page

* refactor album pages

* Refactor gradient color profile header

* Added theme switcher

* Register app theme correctly

* Added locale to the app

* Added translation key

* Styling for bottomsheet colors

* up server version

* Fixed font size

* Fixed overlapsed sliverappbar on photos screen
2022-08-15 18:53:30 +07:00
Alex Tran 1580d27c23 Up version 2022-08-12 20:06:45 +07:00
Alex Tran 5b7236f6ad
Temporary remove bug tests 2022-08-11 23:17:09 +07:00
Alex Tran b6d3e578f2
Added test and github action for unit tests 2022-08-11 08:27:44 +07:00
Alex 5c78f707fe
Modify Album API endpoint to return a count attribute instead of a full assets array (#454)
* Change API to return assets count and change web behavior accordingly

* Refactor assets.length

* Explicitly declare type of assetCount so Dart SDK understand it

* Finished refactoring on mobile
2022-08-10 22:48:25 +07:00
Alex Tran e89339b813
Up server version 2022-08-09 19:12:21 +07:00
Alex Tran 7e6ccbad21
Up server version 2022-08-08 22:55:35 +07:00
Alex Tran 46f4905259
Up server version 2022-08-07 18:42:21 +07:00
Alex b68358766b
Remove VITE_SERVER_ENDPOINT dependency (#428)
* Move backend api to its own instance

* Remove external fetch hook

* Added endpoint for album

* Added endpoint for admin page

* Make request directly to immich-server

* Refactor unsued code
2022-08-06 18:14:54 +07:00
Alex Tran cf2b9eddfa Pump version 1.20 2022-08-03 15:43:42 +07:00
Alex 03e7a254a2
Fixed logging out not redirect correctly in reverse proxy (#414)
* Remove check due to logout always success

* Added console log

* Remove console.log

* Up server version
2022-07-31 16:53:07 +07:00
Alex 97238a1621
Up version for release 2022-07-27 11:39:19 +07:00
Alex ef4136d327
[WEB] Select album thumbnail (#383)
* Added context menu for album opionts

* choose asset for album thumbnail

* Refactor UpdateAlbumDto to accept albumThumbnailAssetId

* implemented changing album cover on web

* Fixed api change on mobile app
2022-07-27 11:16:02 +07:00
Alex 03457f5d32
[WEB] Upload asset directly to album (#379)
* Added stores to get album assetId

* Upload assets and add to album

* Added comments

* resolve conflict when add assets from upload directly

* Filtered out duplicate asset before adding to the album
2022-07-26 20:53:25 +07:00
Alex Tran e4c4b53fcd
Added imageName as searchable text on database 2022-07-26 13:43:12 +07:00
Alex 83cbf51704
Use cookies for client requests (#377)
* Use cookie for frontend request

* Remove api helper to use SDK

* Added error handling to status box

* Remove additional places that check for session.user

* Refactor sending password

* prettier clean up

* remove deadcode

* Move all authentication requests to the client

* refactor upload panel to only fetch assets after the upload panel disappear

* Added keydown to remove focus on title change on album viewer
2022-07-26 12:28:07 +07:00
Alex 052db5d748
Remove/Add asset in ablum on web (#371)
* Added interaction to select multiple thumbnail

* Fixed stutter transition

* Return AlbumResponseDto after removing an asset from album

* Render correctly when an array of thumbnail is updated

* Fixed wording

* Added native dialog for removing users from album

* Fixed rendering incorrect profile image on share user select dialog
2022-07-23 23:23:14 +07:00
Alex 1d34976dd0
Implement album creation on web (#365)
* Added album creation button functionality

* Added input for album title

* Added select photos button

* Added page to select assets

* Show photo selection timeline

* Implemented update album name mechanism:

* Added selection mechanism

* Added selection mechanism with existing assets in album

* Refactored and added comments

* Refactored and added comments - 2

* Refactor album app bar

* Added modal for select user

* Implemented choose users

* Added additional share user button

* Added rule to show add users button
2022-07-22 09:44:22 +07:00
Matthias Rupp bef1e2e3db
Api logout route (#361)
* Add logout route that deletes http only cookies

* Rebuild API
2022-07-19 13:49:58 +07:00
Alex be3e3e5d7e
Added Cookie Authentication (#360)
* Added Cookie Authentication

* Fixed issue with bearer is in lower case

* Fixed bearer to Bearer to conform with standard
2022-07-18 14:14:25 +07:00
Alex c028c7db4e
dev/add detail viewer to album (#358)
* Rename asset viewer folder

* Refactor AssetViewer to be able to user with different component

* Refactor AssetViewer to be able to user with different component

* Added viewer for album and sharing
2022-07-18 00:22:39 +07:00
Alex Tran c129023821
Remove console.log 2022-07-17 15:10:04 +07:00
Alex Tran cbdb8fa51f
Update get user info controller to avoid conflict with /count 2022-07-17 15:09:26 +07:00
Alex c6ecfb679a
Added sharing page to web (#355)
* Added shared album

* Added list tile

* Show info of shared album owner
2022-07-16 23:52:00 +07:00
Alex 5d03e9bda8
Fix test instance cannot clear database after each test" (#354)
* Update test

* Fixed test cannot initialize database

* Added a separate network to test containers group to run test while in development mode
2022-07-16 23:43:31 +07:00
Alex Tran d8b26c6da8
Update bug report template 2022-07-16 10:54:00 +07:00
Alex Tran 2bbc44c5ab
Fixed test 2022-07-16 00:45:58 +07:00
Alex 7134f93eb8
Add ablum feature to web (#352)
* Added album page

* Refactor sidebar

* Added album assets count info

* Added album viewer page

* Refactor album sorting

* Fixed incorrectly showing selected asset in album selection

* Improve fetching speed with prefetch

* Refactor to use ImmichThubmnail component for all

* Update to the latest version of Svelte

* Implement fixed app bar in album viewer

* Added shared user avatar

* Correctly get all owned albums, including shared
2022-07-15 23:18:17 +07:00
Jaime Baez 1887b5a860
Add email validation in the API when creating new users (#350)
* Refactor user.service - add user-repository

* Add email validation for creating users
2022-07-15 14:30:56 +07:00
Alex b1d7ef03e2
Pump version for release (#339)
* Remove unncessesary line

* Pump version for release
2022-07-13 09:51:41 +07:00
Fynn Petersen-Frey bece6253d5
Improve Docker setup and reduce memory usage of production containers (#338) 2022-07-13 07:42:00 +07:00
Alex ae7e582ec8
Refactor mobile to use OpenApi generated SDK (#336) 2022-07-13 07:23:48 +07:00
Fynn Petersen-Frey d69470e207
Add extended redis & DB port configuration via environment variables (#330)
* Add database port configuration via env variable

Add redis connection configuration via env variables

* Add redis connection configuration via env variables
2022-07-12 22:21:11 +07:00
Alex c60e852226
fix 331 (#335)
* fix #331 - Video with no date information in EXIF upload via web caused mobile client not able to render other assets
2022-07-12 16:34:43 +07:00
Alex 9a6dfacf9b
Refactor web to use OpenAPI SDK (#326)
* Refactor main index page

* Refactor admin page

* Refactor Auth endpoint

* Refactor directory to prep for monorepo

* Fixed refactoring path

* Resolved file path in vite

* Refactor photo index page

* Refactor thumbnail

* Fixed test

* Refactor Video Viewer component

* Refactor download file

* Refactor navigation bar

* Refactor upload file check

* Simplify Upload Asset signature

* PR feedback
2022-07-10 21:41:45 +07:00
Alex 7f236c5b18
Add OpenAPI Specs and Response DTOs (#320)
* Added swagger bearer auth method authentication accordingly

* Update Auth endpoint

* Added additional api information for authentication

* Added Swagger CLI pluggin

* Added DTO for /user endpoint

* Added /device-info reponse DTOs

* Implement server version

* Added DTOs for /server-info

* Added DTOs for /assets

* Added album to Swagger group

* Added generated specs file

* Add Client API generator for web

* Remove incorrectly placed node_modules

* Created class to handle access token

* Remove password and hash when getting all user

* PR feedback

* Fixed video from CLI doesn't get metadata extracted

* Fixed issue with TSConfig to work with generated openAPI

* PR feedback

* Remove console.log
2022-07-08 21:26:50 +07:00
Alex 58ec7553ea
Add information for uploading asset and error indication with error message for each failed upload. (#315)
* Added info box

* Fixed upload endpoint doesn't report error status code

* Added chip to show update error

* Added chip to show failed upload

* Add duplication check for upload

* Better duplication-checking placement

* Remove check for duplicated asset

* Added failed backup status route

* added page

* Display error card with thumbnail

* Improved styling

* Set thumbnail with better quality

* Remove force upload error
2022-07-06 16:12:55 +07:00
Alex 357f7d1c31
Added schedule job to perform reverse geocoding if key is added after backing up assets (#305) 2022-07-04 15:16:39 +07:00
Zack Pollard e6d30d72fa
Fix typeorm migrations (#297)
* fix: remove config parameter from typeorm cli and update config

the config parameter is no longer supported since version 0.3
the config now needs to export a DataSource object to work with the 0.3 cli

* fix: update all typeorm entities and migrations to be aligned with database structure

* Fixed test-util import databaseConfig

* Fixed column mismatch in raw query with new migration

* Remove dist build directory when starting dev server

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2022-07-04 14:20:43 +07:00
Jaime Baez 355038a91a
Use `npm ci` for installing pacakages (#304) 2022-07-04 13:47:25 +07:00
Alex 97d9b80baa
Added creation date for video from ffmpeg.prob (#303) 2022-07-04 13:44:43 +07:00
Alex Tran 36162509e0
Up version for release 2022-07-03 10:39:09 +07:00
Alex 76bf1c0379
Remove thumbnail generation on mobile app (#292)
* Remove thumbnail generation on mobile

* Remove tconditions for missing thumbnail on the backend

* Remove console.log

* Refactor queue systems

* Convert queue and processor name to constant

* Added corresponding interface to job queue
2022-07-02 21:06:36 +07:00
Alex a45d6fdf57
Fix server crash on bad file operation and other optimizations (#291)
* Fixed issue with generating thumbnail for video with 0 length cause undefined file and crash the server
* Added all file error handling operation
* Temporarily disabled WebSocket on the web because receiving a new upload event doesn't put the new file in the correct place. 
* Cosmetic fixed on the info panel
2022-07-01 12:00:12 +07:00
Zack Pollard c071e64a7e
infra: switch port to 3003 for machine learning container (#290)
* infra: switch port to 3003 for machine learning container

fixes #289

* Changed port of machine-learning-endpoint to match with new port

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2022-07-01 10:20:04 +07:00
Alex 663f12851e
Fixed filename duplication when upload from web (#288)
* Fixed filename duplication when upload from web

* Fixed cosmetic of detail panel view
2022-06-30 20:43:33 +07:00
Alex Tran 8db073941d
Up server version for release 2022-06-29 21:54:57 +07:00
Alex 5e281b44e9
Add Podman Support (#278) 2022-06-29 21:49:35 +07:00
Alex a2e1d4caa2
Update server dependencies and fixed Typeorm API changes in new version (#276)
* Fixed dependencies

* Adapt typeorm API to be compatible with new version

* Fixed typeorm API in tests

* Remove console.log
2022-06-29 13:39:58 +07:00
Alex 5f00d8b9c6
Added mechanism of required password change of new user's first login (#272)
* Deprecate login scenarios that support pre-web era

* refactor and simplify setup

* Added user info to change password form

* change isFistLogin column to shouldChangePassword

* Implemented change user password

* Implement the change password page for mobile

* Change label

* Added changes log and up minor version

* Fixed typo in the release note

* Up server version
2022-06-27 15:13:07 +07:00
bo0tzz 2e85e18020
Use APP_UPLOAD_LOCATION constant for diskInfo (#271) 2022-06-27 09:14:32 +07:00
Jaime Baez c918f5b001
Set TypeScript to strict mode and fix issues related to server types (#261)
* Fix lint issues and some other TS issues

- set TypeScript in strict mode
- add npm commands to lint / check code
- fix all lint issues
- fix some TS issues
- rename User reponse DTO to make it consistent with the other ones
- override Express/User interface to use UserResponseDto interface
 This is for when the accessing the `user` from a Express Request,
 like in `asset-upload-config`

* Fix the rest of TS issues

- fix all the remaining TypeScript errors
- add missing `@types/mapbox__mapbox-sdk` package

* Move global.d.ts to server `src` folder

* Update AssetReponseDto duration type

This is now of type `string` that defaults to '0:00:00.00000' if not set
which is what the mobile app currently expects

* Set context when logging error in asset.service

Use `ServeFile` as the context for logging an error when
asset.resizePath is not set

* Fix wrong AppController merge conflict resolution

`redirectToWebpage` was removed in main as is no longer used.
2022-06-25 12:53:06 +07:00
Alex Tran 7948cb8110
remove redirect from previous implementation of web routing 2022-06-24 06:33:11 +07:00
Alex 568436f188
Up minor version for release 2022-06-23 22:38:26 +07:00
Zack Pollard 1a3d05ffc3
chore: improve default setup (#234)
* chore: remove UPLOAD_LOCATION as it isn't used in the server

* docker: remove network in docker compose as docker creates one by default

* nginx: update reverse proxy to put web at root and api at /api

* docker: remove unneeded exposed ports and docker network

Align dev setup with prod, but with ports exposed for direct connection
Most communication between services happens on the internal network, so we don't need to expose all these services.
With the nginx changes, the api and web panel are both server through the reverse proxy on / for web and /api for the API.
The only service that should expose ports is nginx as that is the entrypoint to the application.

* chore: remove CORS now we serve the api on /api in the default setup

* docs: update README.md to include /api

* Fixed docket-compose file for dev environment and websocket on web and mobile

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2022-06-23 22:18:50 +07:00
Alex 63bebd92e0
Added image tagging and object detection after generaing jpeg thumbnail 2022-06-21 18:00:30 +07:00
Alex Tran 4aa66f4156
Fixed issue socket-io cannot be connected in production build on web 2022-06-19 09:33:10 +07:00
Alex Tran 799a1c99f2
Remove debugging console.log 2022-06-19 09:13:39 +07:00
Alex Tran c4247bfea3
Fixed issue socket-io cannot be connected in production build on web 2022-06-19 09:12:43 +07:00
Alex 1e3464fe47
Feature - Add upload functionality on Web (#231)
* Added file selector

* Extract metadata to upload files to the web

* Added request for uploading

* Generate jpeg/Webp thumbnail for asset uploaded without thumbnail data

* Added generating thumbnail for video and WebSocket broadcast after thumbnail is generated

* Added video length extraction

* Added Uploading Panel

* Added upload progress store and styling the uploaded asset

* Added condition to only show upload panel when there is upload in progress

* Remove asset from the upload list after successfully uploading

* Added WebSocket to listen to upload event on the web

* Added mechanism to check for existing assets before uploading on the web

* Added test workflow

* Update readme
2022-06-19 08:16:35 +07:00
Jaime Baez 517a3363d6
Refactor API for albums feature (#155)
* Rename "shared" to "album"

Prepare moving "SharedAlbums" to "Albums"

* Update server album API endpoints

* Update mobile app album endpoints

Also add `putRequest` to mobile network.service

* Add GET album collection filter

- allow to filter by owner = 'mine' | 'their'
- make sharedWithUserIds no longer required when creating an album

* Rename remaining variables to "album"

* Add ParseMeUUIDPipe to validate uuid or `me`

* Add album params validation

* Update todo in mobile album service.

* Setup e2e testing

* Add user e2e tests

* Rename database host env variable to DB_HOST

* Add some `Album` e2e tests

Also fix issues found with the tests

* Force push (try to recover DB_HOST env)

* Rename db host env variable to `DB_HOSTNAME`

* Remove unnecessary `initDb` from test-utils

The current database.config is running the migrations:
`migrationsRun: true`

* Remove `initDb` usage from album e2e test

* Update GET albums filter to `shared`

- add filter by all / shared / not shared
- add response DTOs
- add GET albums e2e tests

* Update album e2e tests for user.service changes

* Update mobile app to use album response DTOs

* Refactor album-service DB into album-registry

- DB logic refactored into album-repository making it easier to test
- add some album-service unit tests
- add `clearMocks` to jest configuration

* Finish implementing album.service unit tests

* Rename response DTO

Make them consistent with rest of the project naming

* Update debug log messages in mobile network service

* Rename table `shared_albums` to `albums`

* Rename table `asset_shared_album`

* Rename Albums `sharedAssets` to `assets`

* Update tests to match updated "delete" response

* Fixed asset cannot be compared in Set by adding Equatable package

* Remove hero effect to fixed janky animation

Co-authored-by: Alex <alex.tran1502@gmail.com>
2022-06-18 10:56:36 +07:00
Alex 3511b69fc8
Up Minor Version 2022-06-18 09:56:56 +07:00
Jaime Baez e3449f9c8f
Fix 500 error on login with email not in DB (#212)
* Fix 500 error on login with email not in DB

* Fix type declarations in ServerInfoDto
2022-06-12 18:29:10 +07:00
Alex a8e723d722
Fixed ENABLE_MAPBOX value is ignored (#223) 2022-06-12 18:19:53 +07:00
Alex a8220172f8
WIP refactor container and queuing system (#206)
* refactor microservices to machine-learning

* Update tGithub issue template with correct task syntax

* Added microservices container

* Communicate between service based on queue system

* added dependency

* Fixed problem with having to import BullQueue into the individual service

* Added todo

* refactor server into monorepo with microservices

* refactor database and entity to library

* added simple migration

* Move migrations and database config to library

* Migration works in library

* Cosmetic change in logging message

* added user dto

* Fixed issue with testing not able to find the shared library

* Clean up library mapping path

* Added webp generator to microservices

* Update Github Action build latest

* Fixed issue NPM cannot install due to conflict witl Bull Queue

* format project with prettier

* Modified docker-compose file

* Add GH Action for Staging build:

* Fixed GH action job name

* Modified GH Action to only build & push latest when pushing to main

* Added Test 2e2 Github Action

* Added Test 2e2 Github Action

* Implemented microservice to extract exif

* Added cronjob to scan and generate webp thumbnail  at midnight

* Refactor to ireduce hit time to database when running microservices

* Added error handling to asset services that handle read file from disk

* Added video transcoding queue to process one video at a time

* Fixed loading spinner on web while loading covering the info panel

* Add mechanism to show new release announcement to web and mobile app (#209)

* Added changelog page

* Fixed issues based on PR comments

* Fixed issue with video transcoding run on the server

* Change entry point content for backward combatibility when starting up server

* Added announcement box

* Added error handling to failed silently when the app version checking is not able to make the request to GITHUB

* Added new version announcement overlay

* Update message

* Added messages

* Added logic to check and show announcement

* Add method to handle saving new version

* Added button to dimiss the acknowledge message

* Up version for deployment to the app store
2022-06-11 16:12:06 +07:00
Alex 397f8c70b4
Fixed NPM build dependency conflict for server 2022-06-07 08:08:22 +07:00
Jaime Baez b359dc3cb6
Fix user e2e tests (#194)
* WIP fix user e2e tests

The e2e tests still don't seem to work due to migrations not running.

Changes:
- update user.e2e tests to use new `userService.createUser` method
- fix server `typeorm` command to use ORM config
- update make test-e2e to re-create database volume every time
- add User DTO
- update auth.service and user.service to use User DTO
- update CreateUserDto making optional properties that are optional

* Fix migrations
- add missing `.ts` extension to migrations path
- update user e2e test for the new returned User resource
2022-06-06 11:16:03 +07:00
Alex b9f38162d5
Implemented status box on the side bar (#201) 2022-06-05 05:15:39 +07:00
Alex ab6909bfbd
20 video conversion for web view (#200)
* Added job for video conversion every 1 minute

* Handle get video as mp4 on the web

* Auto play video on web on hovered

* Added video player

* Added animation and video duration to thumbnail player

* Fixed issue with video not playing on hover

* Added animation when loading thumbnail
2022-06-04 18:34:11 +07:00
Alex 53c3c916a6
View assets detail and download operation (#198)
* Fixed not displaying default user profile picture

* Added buttons to close viewer and micro-interaction for navigating assets left, right

* Add additional buttons to the control bar

* Display EXIF info

* Added map to detail info

* Handle user input keyboard

* Fixed incorrect file name when downloading multiple files

* Implemented download panel
2022-06-03 11:04:30 +07:00
Alex d476b15312
Implemented user profile upload and show on web/mobile (#191)
* Update mobile dependencies

* Added image picker

* Added mechanism to upload profile image

* Added image type to send to web

* Added styling for circle avatar

* Fixxed issue with sharp cannot resize image properly

* Finished displaying and uploading user profile

* Added user profile to web
2022-05-28 22:35:45 +07:00
Alex Tran bdf38e7668 Added endpoint for getting user profile image 2022-05-27 22:24:58 +07:00
Alex Tran e33566a04a Upload profile picture and convert into webp 2022-05-27 22:15:35 +07:00
Alex c28251b8b4
[WEB] View large images on web (#189)
* Added selection icon to thumbnail

* Added micro-interaction and video file indication

* Added page to add page

* Added image viewer

* navigate assets

* Added separate component for viewing the video file

* Added FFmpeg modules

* Added correct content-type header for serving image file

* Added loading spinner
2022-05-27 14:02:06 +07:00
Pavle Portic a44043a4e5
Add ability to pass redis hostname as env var (#174)
* Add ability to pass redis hostname as env var

* Read postgres host from env var in microservices

* Update .env.example with postgres and redis hostname vars
2022-05-23 17:23:02 +07:00
Alex 2c83e52c15
Added dependency in docker-compose (#173)
* Added dependency in docker-compose
* downgrade sharp version to 0.28
2022-05-22 10:15:38 +07:00
Alex 55c5027539
Add webp thumbnail conversion task to optimize performance of fast scrolling (#172)
* Update readme

* Added webp to table and entity

* Added cronjob and sharp dependencies

* Added conversion of webp every 5 minutes and endpoint will now server webp image if exist
2022-05-22 06:56:36 +07:00
Alex 6023c3c624
Show assets on web (#168)
* Implemented lazy loading thumbnail
* Display assets as date-time grouping
* Update Readme
* Modify GitHub action to run from the latest update
2022-05-21 16:50:56 +07:00
Alex a779c3803c
Add web interface with admin functionality (#167) 2022-05-21 02:23:55 +07:00
Jaime Baez 79dea504b0
Add e2e testing setup (#163)
* Setup e2e testing

* Add user e2e tests

* Rename database host env variable to DB_HOST

* Force push (try to recover DB_HOST env)

* Rename db host env variable to `DB_HOSTNAME`

* Remove unnecessary `initDb` from test-utils

The current database.config is running the migrations:
`migrationsRun: true`
2022-05-19 18:30:47 +07:00
Alex c5adbea6e1
Fixed incorrect microservices URLs after updating dockerfiles (#159) 2022-05-11 06:18:11 +07:00
Alex 373b6918f8
Feature #120 #89 selective backup in app (#137) 2022-05-06 07:22:23 +07:00
Alex 2c4243b3d0
Deploy 1.8.0_12-dev (#132)
* Update 1.8.0_12
* Update readme
2022-04-29 13:10:42 +07:00
Alex 38e0178c81
Implemented editable album title (#130)
* Replace static title text with a text edit field
* Implement endpoint for updating album info
* Implement changing title
* Only the owner can change the title
2022-04-28 23:46:37 +07:00
Alex 4309104925
118 - Implement shared album feature (#124)
* New features 
  - Share album. Users can now create albums to share with existing people on the network.
  - Owner can delete the album.
  - Owner can invite the additional users to the album.
  - Shared users and the owner can add additional assets to the album.
* In the asset viewer, the user can swipe up to see detailed information and swip down to dismiss.
* Several UI enhancements.
2022-04-23 21:08:45 +07:00
Alex b74ad69288
Fixed duplicated filename on upload 2022-04-05 14:57:54 +07:00
Alex c7dff229db
Up minor v1.6.0 (#113) 2022-04-05 10:34:54 +07:00
Alex 3bdcdef198
Fixed backup stuck at unsupported format (#108)
* Added webp as supported file type, allow continue upload when an image fail

* Added webp as supported file type, allow continue upload when an image fail

* Solved issue with bad assets cause backup to stop
2022-04-04 23:37:48 +07:00
Alex b69f6e0df7
Update inline font for f-droid publication metric (#107)
* Added local font
* Up Patch 1.5.1+9
2022-04-04 09:08:53 +07:00
Alex be2794a372
Optimization/fix slow backup when asset list is long. (#104)
* Handle pause/restart listening to event on_upload_success and reload asset list after navigating back from BackupControllerPage
* Remove unused api endpoint
2022-04-03 12:31:45 +07:00
Alex Tran 2ff25b49f4 Up Minor 1.5.0+8 2022-04-02 12:46:29 +07:00
Alex 90ef64efa3
Download asset to local and error fixing (#100)
* Update photo_manager pub package
* Added download endpoint for assets
* Successfully save a photo to the local device's gallery
* Save save a video to the local device's gallery
* Fixed #97
* Added download loading indicator
* Refactor and increase the font size for curated search thumbnail images
* Reposition loading animation on the search result page
2022-04-02 12:31:53 +07:00
Alex 23ba651705
Fixed npm run start:prod not able to find build directory (#83) 2022-03-28 21:00:17 +07:00
Alex ac0ad98b55
Fix docker-compose in production (#81)
* Fixed problem with docker-compose not updating new files in the multi-stage build.
* Update readme with a new screenshot
2022-03-28 15:21:15 +07:00
Alex 9cbd5d1b0c
Up Minor 1.4.0 (#79) 2022-03-27 15:55:29 +07:00
Alex 80fd664cc8
Better error message for duplicate file (#78)
* Added try/catch block for saving new asset to database
* Fixed typo for email field
* Added check before generating thumbnail or tag images
2022-03-27 15:47:49 +07:00
Alex dd9c5244fd
Added machine learning microservice and object detection (#76) 2022-03-27 14:58:54 +07:00
Alex Tran 725ab5622f Up Version to 1.3.2 2022-03-23 15:36:38 +07:00
Alex e9acd21733
Implemented getting correct disk info for the mounted directory (#72) 2022-03-23 14:53:45 +07:00
Alex Tran ce1ab1ed50 Add python dependency to server docker build 2022-03-22 02:13:16 +07:00
Alex Tran 31c18ff34c Fixed Docker and Fastlane build issue 2022-03-22 01:57:40 +07:00
Alex e407a4fa13
Get thumbnail from app (#68)
* Renamed multipart filed name 'files' to 'assetData'. 
* Added an additional field name of 'thumbnailData' to multipart form.
* Implemented upload mechanism for thumbnail directly from the mobile client.
* Removed dead code
* Implemented a version checking mechanism.
2022-03-22 01:22:04 +07:00
Alex Tran dbd79f4797 Fixed MAPBOX_KEY validation error 2022-03-19 10:42:32 +07:00
Alex f790315d3f
Fixed mapbox key required incorrect (#62) 2022-03-19 10:26:58 +07:00
Alex 6e0ac79eae
Add support for Apple Pro Raw format (.DNG) (#60)
* Added '.dng' (AppleProRaw) to support file's type
* Added OpenCV python framework for uniform image resizer
* Added version number information
2022-03-18 20:23:05 +07:00
Alex 8c7080eaef
Show curated asset's location in search page (#55)
* Added Tab Navigation Observer to trigger event handling for tab page navigation
* Added query to get access with distinct location
* Showed places in search page as a horizontal list
* Showed location search result on tapped
2022-03-16 10:19:31 +07:00
Alex 026f3c24e9
Add reverse geocoding and show asset location on map in detail view (#43)
* Added reserve geocoding, location in search suggestion, and search by location
* Added mapbox sdk to app
* Added mapbox to image detailed view
2022-03-10 16:09:03 +07:00
Alex Tran 251c92ff1e Update Readme - Modified upload filename to support cli upload command 2022-03-07 11:39:54 +07:00
Alex 5990a28870
Implemented search result page (#37) 2022-03-02 16:44:24 +07:00
Alex bfde308492
Added Tab Bar, search bar and suggested search terms from assets metadata, tags (#35) 2022-02-27 12:43:29 +07:00
Alex 619735fea0
Implemented image tagging using TensorFlow InceptionV3 (#28)
* Refactor docker-compose to its own folder
* Added FastAPI development environment
* Added support for GPU in docker file
* Added image classification
* creating endpoint for smart Image info
* added logo with white background on ios
* Added endpoint and trigger for image tagging
* Classify image and save into database
* Update readme
2022-02-19 22:42:10 +07:00
Alex c234c95880
websocket upload notification - closed #24 (#25)
* Render when a new asset is uploaded from WebSocket notification
* Update Readme
2022-02-14 10:40:41 +07:00
dependabot[bot] 7cc7fc0a0c
Bump follow-redirects from 1.14.7 to 1.14.8 in /server (#23)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-13 15:12:51 +07:00
Alex 897d49f734
Implemented delete asset on device and on database (#22)
* refactor serving file function asset service
* Remove PhotoViewer for now since it creates a problem in 2.10
* Added error message for wrong decode file and logo for failed to load file
* Fixed error when read stream cannot be created and crash server
* Added method to get all assets as a raw array
* Implemented cleaner way of grouping image
* Implemented operation to delete assets in the database
* Implemented delete on database operation
* Implemented delete on device operation
* Fixed issue display wrong information when the auto backup is enabled after deleting all assets
2022-02-13 15:10:42 +07:00
Alex Tran 56627caf5b Fixed EACCES permission when mounting bind volume, add dynamic location for backup directory 2022-02-11 22:23:06 +07:00
Alex de1dbcea9c
Implemented EXIF store and display (#19)
* Added EXIF extracting in the backend
* Added EXIF displaying on `image_viewer_page.dart`
* Added Icon for backup option not enable
2022-02-10 20:40:11 +07:00
Alex Tran d1498506a8 Remove TensorFlow dependency to work with ARM64 2022-02-09 21:06:37 +07:00
Alex 38c968d47e
Support HEIC/HEIF (#16)
* Support HEIC/HEIF backup
* Storing backup directly from original file from the phone
* Directly read and backup video file - Improve performance on video backup
2022-02-09 20:48:06 +07:00
Alex Tran e63dc49475 Update readme with gif 2022-02-08 13:55:18 +07:00
Alex Tran 6ad77e9434 Update readme 2022-02-07 23:55:30 +07:00
Alex 919928ab70
Implemented auto backup (#11) 2022-02-07 23:42:35 +07:00
Alex Tran d078367c04 change path in of target docker file in docker-compose for server 2022-02-07 15:11:59 +07:00
Alex Tran a8edc85183 rename docker-minimal to dockerfile as target for github action 2022-02-07 15:06:30 +07:00
Alex Tran 5d48de7fa9 Change to npm instead of yarn in docker image to test for build error on github action 2022-02-07 14:58:23 +07:00
Alex Tran 82beb040bc Remove production build on docker file to test build for arm architecture 2022-02-07 14:38:02 +07:00
Alex c24fb403c5
Implemented load new image when navigating back from backup page (#9) 2022-02-06 20:31:32 +07:00
Alex 97dc7660b4
Implemented Video Upload and Player (#2)
* Implementing video upload features

* setup image resize processor

* Add video thumbnail with duration and icon

* Fixed issue with video upload timeout and upper case file type on ios

* Added video player page

* Added video player page

* Fixing video player not play on ios

* Added partial file streaming for ios/android video request

* Added nginx as proxy server for better file serving

* update nginx and docker-compose file

* Video player working correctly

* Video player working correctly

* Split duration to the second
2022-02-06 00:07:56 +07:00
Alex Tran b6a7d40863 Added fluent ffmpeg 2022-02-05 01:33:08 +07:00
Alex Tran 6141888d3e Create minimal build for nodejs environment that can run tensorflow 2022-02-04 11:23:14 +07:00
Alex Tran 56c92cd83b Implementing scroll bar like Google Photos 2022-02-03 21:01:14 +07:00
Alex Tran 613b4449a7 Add readme for top level folder, clean up dead code 2022-02-03 15:27:31 +07:00
Alex Tran 85b83f9666 Added successfully built docker-compose and cockerFile 2022-02-03 14:42:27 +07:00
Tran, Alex 568cc243f0 Transfer repository from Gitlab 2022-02-03 10:06:44 +07:00