Sortfolio is a web-based photography portfolio application designed to automate image classification using Convolutional Neural Networks (CNNs). It allows photographers to upload, organise, and share their work effortlessly using AI-generated hashtags and semantic album grouping.
- Batch image uploads
- Automatic hashtag generation using CNNs
- Dynamic album creation with vector embeddings
- Public profiles and album sharing
- Explore page to discover other portfolios
- Secure user authentication
- Frontend: React.js
- Backend: Django
- ML/AI: Amazon Rekognition API, Sentence-BERT (all-MiniLM-L6-v2)
- Database: PostgreSQL
- Cloud Storage: AWS S3
To run the application locally, follow the steps below for both backend and frontend setup.
cd sortfoliocd backend
python -m venv venv # Or: python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtSet environment variables by creating a .env file in the sortfolio root:
See Supporting Material.pdf for the variables to copy paste in the env. file
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
AWS_STORAGE_BUCKET_NAME=PostgreSQL Setup
psql -U postgresThen in the psql shell
CREATE USER myuser WITH PASSWORD 'gRepstosql';
CREATE DATABASE mydb OWNER myuser;
ALTER ROLE myuser CREATEDB;
Then exit with:
\q
This creates:
- A user myuser with password gRepstosql.
- A database mydb owned by that user.
Then, apply migrations and start the backend server:
python manage.py migrate
python manage.py runservercd ../frontend
npm install
npm startThe frontend will be available at http://localhost:3000 and will proxy requests to the backend at http://localhost:8000.
You will have to make your own logins using the register tab, use images from https://unsplash.com to populate albums.