4.4 KiB
This is the API for my 2023-2024 FBLA Coding & Programming App
Installation
- Install Dart SDK.
- Clone the repo .
git clone https://git.marinodev.com/MarinoDev/FBLA24.git
cd FBLA24/fbla-api/
- Run
dart pub installto install dart packages. - Install PostgreSQL and set it up.
- Create
fbladatabase in postgres.
CREATE DATABASE fbla
WITH
OWNER = [username]
ENCODING = 'UTF8'
CONNECTION LIMIT = -1
IS_TEMPLATE = False;
Make sure to change [username] to the actual username of your postgres instance.
- Create
businessestable.
-- Table: public.businesses
-- DROP TABLE IF EXISTS public.businesses;
CREATE TABLE IF NOT EXISTS public.businesses
(
id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 0 MINVALUE 0 MAXVALUE 2147483647 CACHE 1 ),
name text COLLATE pg_catalog."default" NOT NULL,
description text COLLATE pg_catalog."default" NOT NULL,
type text COLLATE pg_catalog."default" NOT NULL,
website text COLLATE pg_catalog."default" NOT NULL,
"contactName" text COLLATE pg_catalog."default" NOT NULL,
"contactEmail" text COLLATE pg_catalog."default" NOT NULL,
"contactPhone" text COLLATE pg_catalog."default" NOT NULL,
notes text COLLATE pg_catalog."default" NOT NULL,
"locationName" text COLLATE pg_catalog."default" NOT NULL,
"locationAddress" text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT businesses_pkey PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.businesses
OWNER to [username];
Make sure to change [username] to the actual username of your postgres instance.
- Create
listingstable.
-- Table: public.listings
-- DROP TABLE IF EXISTS public.listings;
CREATE TABLE IF NOT EXISTS public.listings
(
id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
"businessId" integer NOT NULL,
name text COLLATE pg_catalog."default" NOT NULL,
description text COLLATE pg_catalog."default" NOT NULL,
type text COLLATE pg_catalog."default" NOT NULL,
wage text COLLATE pg_catalog."default",
link text COLLATE pg_catalog."default",
"offerType" text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT listing_pkey PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.listings
OWNER to [username];
Make sure to change [username] to the actual username of your postgres instance.
- Create
userstable.
-- Table: public.users
-- DROP TABLE IF EXISTS public.users;
CREATE TABLE IF NOT EXISTS public.users
(
username text COLLATE pg_catalog."default" NOT NULL,
password_hash text COLLATE pg_catalog."default" NOT NULL,
salt text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (username),
CONSTRAINT username UNIQUE (username)
)
TABLESPACE pg_default;
ALTER TABLE IF EXISTS public.users
OWNER to [username];
Make sure to change [username] to the actual username of your postgres instance.
- Set environment variables
JOBLINK_POSTGRES_ADDRESS(IP address),JOBLINK_POSTGRES_PORT( default 5432),JOBLINK_POSTGRES_USERNAME, andJOBLINK_POSTGRES_PASSWORDto appropriate information for your postgres database. Also setJOBLINK_SECRET_KEYto anything you want to generate JSON Web Tokens. - Set lib/create_first_user.dart username and password variables at top of file and run
with
dart run lib/create_first_user.dart.
Note: the username and password you use here will be what you use to log into the app as an admin.
Usage
Installed
Start the API with dart run lib/fbla_api.dart
Note the address it is serving at, you will need this to connect it to the UI, and to run tests.
Docker
Run it in a docker container
with Docker Build
and Docker Compose using the included Dockerfile
and docker-compose.yml files. If using Docker Compose, change the first
portion of the volumes path on line 9 to any desired storage location.
Note the address it is serving at, you will need this to connect it to the UI, and to run tests.
Testing
You can test all functionality of your api with dart run test/fbla_api_test.dart,
setting apiAddress on line 8 to your api address.