Index: .gitignore
===================================================================
--- .gitignore	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ .gitignore	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -30,4 +30,6 @@
 .env.local
 .env
+.env.development
+.env.production
 
 # vercel
Index: README.md
===================================================================
--- README.md	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ README.md	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -4,4 +4,8 @@
 
 HOME_URL="http://localhost:3000"
+POSTGRES_HOST="db"
+POSTGRES_USER="postgres"
+POSTGRES_PASSWORD="postgres"
+POSTGRES_DB="postgres"
 
 
@@ -11,7 +15,6 @@
 
 
-======== If you are configuring this project for the first time, do the following =========
+======== If you are configuring this project for the first time, do the following, in order to set up the database =========
 
-We will now set up a dummy database, in order for the project to work.
 Note: The containers should be running in the background! (previously started with docker-compose up)
 
@@ -19,5 +22,7 @@
 
 docker exec -it name_of_db_container /bin/bash
-psql -U postgres postgres &lt; /usr/local/app/caessino.sql
+psql -U postgres postgres `<` /usr/local/app/dummy_database.sql
+
+(When inserting `<`, it should not be surrounded by quotation marks)
 
 ==========================================================================================
Index: essino.sql
===================================================================
--- caessino.sql	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ 	(revision )
@@ -1,80 +1,0 @@
-DROP TABLE IF EXISTS "public"."players";
--- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
-
--- Squences
-CREATE SEQUENCE IF NOT EXISTS players_id_seq;
-
--- Table Definition
-CREATE TABLE "public"."players" (
-    "id" int4 NOT NULL DEFAULT nextval('players_id_seq'::regclass),
-    "username" text NOT NULL,
-    "display_name" text NOT NULL,
-    "credits" float8
-);
-
-DROP TABLE IF EXISTS "public"."stats";
--- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
-
--- Squences
-CREATE SEQUENCE IF NOT EXISTS stats_id_seq;
-
--- Table Definition
-CREATE TABLE "public"."stats" (
-    "id" int4 NOT NULL DEFAULT nextval('stats_id_seq'::regclass),
-    "username" text NOT NULL,
-    "blackjack_games" int8,
-    "roulette_games" int8,
-    "poker_games" int8,
-    "blackjack_won_games" int8,
-    "roulette_won_games" int8,
-    "poker_won_games" int8, 
-    "money_bet" int8,
-    "money_earned" int8
-);
-
-DROP TABLE IF EXISTS "public"."users";
--- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
-
--- Squences
-CREATE SEQUENCE IF NOT EXISTS users_id_seq;
-
--- Table Definition
-CREATE TABLE "public"."users" (
-    "id" int4 NOT NULL DEFAULT nextval('users_id_seq'::regclass),
-    "username" text NOT NULL,
-    "password" text NOT NULL,
-    "salt" text NOT NULL
-);
-
-INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
-(9, 'david', 'Dvd', 1000);
-INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
-(6, 'simon', 'Simon', 3553);
-INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
-(8, 'gis', 'Gis', 1003);
-INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
-(12, 'gigi', 'GG', 435),
-(10, 'test', 'Tester', 1000),
-(11, 'guest', 'guester', 1000);
-
-INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
-(6, 'gis', 0, 0, 0, 0, 0, 0, 0, 0);
-INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
-(7, 'david', 0, 0, 0, 0, 0, 0, 0, 0);
-INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
-(10, 'gigi', 7, 0, 0, 3, 0, 0, 4187, 3122);
-INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
-(8, 'test', 0, 0, 0, 0, 0, 0, 0, 0),
-(9, 'guest', 0, 0, 0, 0, 0, 0, 0, 0),
-(4, 'simon', 10, 0, 0, 5, 0, 0, 5180, 3899);
-
-INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
-(10, 'simon', 'bcfdfad35ef0240e91e8bc969e0037b3ec1651a30fc5e0f56b2eb852124e592979f8b566abfbbe94872b43e43208e35053da81931a04d30f8b94460c2df52249', '99ab54b2affab7ec75ab3fbec005b4f0');
-INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
-(12, 'gis', '4df04931f518225d0d55afc0db5e69cf5453a2d5ef0f6266223611aefc390f3c8971e37e75944d11f7ad185e3c5e5390c1fffbc5ef6d909a74adb6852ee2cfe0', '2a84f05ebf62c6d692f99dc72eec0c6e');
-INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
-(13, 'david', 'e7cb9841fce607ab7d677fd3c6d02967249f92ac64c0bf0f14f84e1786f2a5787b2d2c7cbeece234f74aee0f75c27ae9fc354d088f30f89f5deef98865017ecb', 'a21f77281bba07b1d5ae5d5fe71ddf3d');
-INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
-(14, 'test', '3b28f1d5ad3633ff23fbde106500e3ab6837779cad55092f83b9607294364177aa4eceb2e69f00bdd6f81cc6f062804a373d74503048dca1eceeb9de22425eab', '65ecbfcc453081ad8ae65470f7e50056'),
-(15, 'guest', 'a67c607687003434a04f89d805cc95b0a59bd310dfef6358b7e17c2a3c7b216f8c0c91d919fbfeea3c45635682b241b19d5a9841d83da43f164287c526efb924', '59eb67f0023c9b6fd246ff33382f739d'),
-(16, 'gigi', '690aa3232c85602d15fcaaf761ec0f7a14958df2c3054a177b5ac0a05584c959cde01015b009d95111798533add6bdf578867f5c58ebab8121a08b55b32c810c', '353a2adee3a03d28a7118ea138a76aac');
Index: components/Alert.jsx
===================================================================
--- components/Alert.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/Alert.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -8,5 +8,5 @@
 
 import { setBlackjack, setStyle } from '../redux/reducers/styleSlice'
-import { setGame, setPlayer } from '../redux/reducers/playerSlice'
+import { setGame } from '../redux/reducers/playerSlice'
 
 const Alert = () => {
Index: components/GameCircle.jsx
===================================================================
--- components/GameCircle.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/GameCircle.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -4,10 +4,4 @@
 
 import { useRouter } from 'next/router'
-
-import { useState } from 'react'
-
-import { setInGame } from '../redux/reducers/playerSlice'
-import { useDispatch } from 'react-redux'
-import FullwidthText from './FullwidthText'
 
 const GameCircle = ( { src, text, routeTo, game } ) => {
Index: components/Header.jsx
===================================================================
--- components/Header.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/Header.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -3,7 +3,5 @@
 import Link from 'next/link'
 
-import { useRouter } from 'next/router'
-
-import { useState, useEffect } from 'react'
+import { useEffect } from 'react'
 import { useDispatch, useSelector } from 'react-redux'
 
@@ -23,4 +21,8 @@
       ...styleState.style,
       displayRegisterScreen: true,
+      registerScreenInfo: {
+        ...styleState.style.registerScreenInfo,
+        setFocus: true
+      }
     }))
   }
@@ -30,4 +32,8 @@
       ...styleState.style,
       displayLoginScreen: true,
+      loginScreenInfo: {
+        ...styleState.style.loginScreenInfo,
+        setFocus: true
+      }
     }))
   }
@@ -128,5 +134,5 @@
         </div>
       </Link>
-      <nav>
+      <nav className='mainHeaderNavigation'>
           <ul>
             {playerState.player.displayName === '' || playerState.player.displayName === 'Guest' ? (
Index: mponents/InGameHeader.jsx
===================================================================
--- components/InGameHeader.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ 	(revision )
@@ -1,269 +1,0 @@
-import React from 'react'
-
-import Link from 'next/link'
-
-import { useRouter } from 'next/router'
-
-import { AiOutlineArrowLeft } from 'react-icons/ai'
-
-import { useState, useEffect } from 'react'
-import { useDispatch, useSelector } from 'react-redux'
-
-import { setGame, setPlayer } from '../redux/reducers/playerSlice'
-import { setBlackjack, setStyle } from '../redux/reducers/styleSlice'
-
-import axios from 'axios';
-
-const InGameHeader = () => {
-    const dispatch = useDispatch();
-
-    const router = useRouter();
-
-    const playerState = useSelector(state => state.player);
-    const styleState = useSelector(state => state.style);
-
-    useEffect(() => {
-        // display loading screen
-        dispatch(setStyle({
-            ...styleState.style,
-            displayLoadingScreen: true,
-        }));
-
-        dispatch(setBlackjack({
-            ...styleState.blackjack,
-            inputControls: {
-                ...styleState.blackjack.inputControls,
-                initialBet: {
-                    ...styleState.blackjack.inputControls.initialBet,
-                    chosenCredits: parseInt(playerState.player.credits/2),
-                }
-            }
-        }));
-
-        axios.get(`/api/postgre?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(postgreRes => {
-            if (postgreRes.data?.success) {
-                dispatch(setPlayer({
-                    ...playerState.player,
-                    displayName: postgreRes.data?.displayName,
-                    session_id: postgreRes.data?.session_id,
-                    credits: postgreRes.data?.credits,
-                }));
-
-                axios.get(`/api/blackjack?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
-                    if (res.data?.success) {
-                        dispatch(setGame({
-                            ...playerState.game,
-                            status: res.data?.status,
-                            playerCards: res.data?.playerCards,
-                            dealerCards: res.data?.dealerCards,
-                        }))
-
-                        dispatch(setStyle({
-                            ...styleState.style,
-                            displayLoadingScreen: false,
-                        }))
-
-                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 5) {
-                            dispatch(setBlackjack({
-                                ...styleState.blackjack,
-                                inputControls: {
-                                    ...styleState.blackjack.inputControls,
-                                    initialBet: {
-                                        ...styleState.blackjack.inputControls.initialBet,
-                                        chosenCredits: parseInt(res.data?.initialBet),
-                                    },
-                                    sideBet: {
-                                        ...styleState.blackjack.inputControls.sideBet,
-                                        chosenCredits: 0,
-                                    }
-                                },
-                                displays: {
-                                    ...styleState.blackjack.displays,
-                                    initialBet: false,
-                                    hitStand: true,
-                                }
-                            }))
-
-                            if (res.data?.outcome === 'player_busted') {
-                                dispatch(setStyle({
-                                    ...styleState.style,
-                                    alert: {
-                                        show: true,
-                                        title: 'You busted!',
-                                        subtitle: `You lost $${-1*res.data?.earnings}`,
-                                        button: {
-                                            text: 'Play again',
-                                            action: 'play_again',
-                                        }
-                                    }
-                                }))
-                            }
-                            else if (res.data?.outcome === 'dealer_busted') {
-                                dispatch(setStyle({
-                                    ...styleState.style,
-                                    alert: {
-                                        show: true,
-                                        title: 'Dealer busted!',
-                                        subtitle: `You won $${res.data?.earnings}`,
-                                        button: {
-                                            text: 'Play again',
-                                            action: 'play_again',
-                                        }
-                                    }
-                                }))
-                            }
-                            else if (res.data?.outcome === 'player_won') {
-                                dispatch(setStyle({
-                                    ...styleState.style,
-                                    alert: {
-                                        show: true,
-                                        title: 'You won!',
-                                        subtitle: `You won $${res.data?.earnings}`,
-                                        button: {
-                                            text: 'Play again',
-                                            action: 'play_again',
-                                        }
-                                    }
-                                }))
-                            }
-                            else if (res.data?.outcome === 'player_lost') {
-                                dispatch(setStyle({
-                                    ...styleState.style,
-                                    alert: {
-                                        show: true,
-                                        title: 'You lost!',
-                                        subtitle: `You lost $${-1*res.data?.earnings}`,
-                                        button: {
-                                            text: 'Play again',
-                                            action: 'play_again',
-                                        }
-                                    }
-                                }))
-                            }
-                            else if (res.data?.outcome === 'draw') {
-                                dispatch(setStyle({
-                                    ...styleState.style,
-                                    alert: {
-                                        show: true,
-                                        title: 'Draw!',
-                                        subtitle: `You got your $${res.data?.earnings} back`,
-                                        button: {
-                                            text: 'Play again',
-                                            action: 'play_again',
-                                        }
-                                    }
-                                }))
-                            }
-                        }
-
-                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 4) {
-                            dispatch(setBlackjack({
-                                ...styleState.blackjack,
-                                inputControls: {
-                                    ...styleState.blackjack.inputControls,
-                                    initialBet: {
-                                        ...styleState.blackjack.inputControls.initialBet,
-                                        chosenCredits: parseInt(res.data?.initialBet),
-                                    },
-                                    sideBet: {
-                                        ...styleState.blackjack.inputControls.sideBet,
-                                        chosenCredits: 0,
-                                    }
-                                },
-                                displays: {
-                                    ...styleState.blackjack.displays,
-                                    initialBet: false,
-                                    hitStand: true,
-                                }
-                            }))
-                        }
-
-                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 3) {
-                            dispatch(setBlackjack({
-                                ...styleState.blackjack,
-                                inputControls: {
-                                    ...styleState.blackjack.inputControls,
-                                    initialBet: {
-                                        ...styleState.blackjack.inputControls.initialBet,
-                                        chosenCredits: parseInt(res.data?.initialBet),
-                                    },
-                                    sideBet: {
-                                        ...styleState.blackjack.inputControls.sideBet,
-                                        chosenCredits: parseInt(res.data?.sideBet),
-                                    }
-                                },
-                                displays: {
-                                    ...styleState.blackjack.displays,
-                                    initialBet: false,
-                                    hitStand: true,
-                                }
-                            }))
-                        }
-
-                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 2) {
-                            dispatch(setBlackjack({
-                                ...styleState.blackjack,
-                                inputControls: {
-                                    ...styleState.blackjack.inputControls,
-                                    initialBet: {
-                                        ...styleState.blackjack.inputControls.initialBet,
-                                        chosenCredits: parseInt(res.data?.initialBet),
-                                    }
-                                },
-                                displays: {
-                                    ...styleState.blackjack.displays,
-                                    initialBet: false,
-                                    sideBet: true,
-                                }
-                            }))
-                        }
-
-                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 1) {
-                            dispatch(setBlackjack({
-                                ...styleState.blackjack,
-                                inputControls: {
-                                    ...styleState.blackjack.inputControls,
-                                    initialBet: {
-                                        ...styleState.blackjack.inputControls.initialBet,
-                                        chosenCredits: parseInt(postgreRes.data?.credits/2),
-                                    }
-                                },
-                            }))
-                        }
-                    }
-                });
-            }
-            else {
-                dispatch(setStyle({
-                    ...styleState.style,
-                    notification: {
-                        show: true,
-                        text: 'Please login in order to play blackjack.',
-                        status: 'error',
-                    },
-                    displayLoadingScreen: false,
-                }))
-
-                router.push('/');
-            }
-        });
-    }, []);
-
-    return (
-        <header className="header">
-            <Link href="/" passHref>
-                <h2>
-                    <AiOutlineArrowLeft />
-                </h2>
-            </Link>
-            <nav>
-                <ul>
-                    <li>Hi{playerState?.player?.displayName ? `, ${playerState.player.displayName}` : ``}</li>
-                    <li>Balance: ${playerState?.player?.credits}</li>
-                </ul>
-            </nav>
-        </header>
-    )
-}
-
-export default InGameHeader
Index: components/LoginScreen.jsx
===================================================================
--- components/LoginScreen.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/LoginScreen.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -2,4 +2,6 @@
 
 import { useSelector, useDispatch } from 'react-redux'
+
+import { useRef } from 'react'
 
 import { setPlayer } from '../redux/reducers/playerSlice';
@@ -9,8 +11,23 @@
 
 const LoginScreen = () => {
+    const ref = useRef(null);
+
     const dispatch = useDispatch();
 
     const playerState = useSelector(state => state.player);
     const styleState = useSelector(state => state.style);
+
+    setTimeout(() => {
+        if (styleState.style.displayLoginScreen && styleState.style.loginScreenInfo.setFocus) {
+            ref.current.focus();
+            dispatch(setStyle({
+                ...styleState.style,
+                loginScreenInfo: {
+                    ...styleState.style.loginScreenInfo,
+                    setFocus: false
+                }
+            }))
+        }
+    }, 10);
 
     function onChangeUsername(e) {
@@ -34,4 +51,10 @@
     }
 
+    function keyUp(e) {
+        if (e.key === 'Enter') {
+            login();
+        }
+    }
+
     function closeForm() {
         dispatch(setStyle({
@@ -44,6 +67,6 @@
             inlineAlertText: '',
         }));
+
     }
-
     function login() {
         dispatch(setStyle({
@@ -119,7 +142,7 @@
                 <div>
                     <span>Username:</span>
-                    <input type="text" onChange={(e) => {onChangeUsername(e)}} value={styleState.style.loginScreenInfo.username}/>
+                    <input ref={ref} type="text" onChange={(e) => {onChangeUsername(e)}} onKeyUp={(e) => keyUp(e)} value={styleState.style.loginScreenInfo.username} placeholder="your username..."/>
                     <span>Password:</span>
-                    <input type="password" onChange={(e) => {onChangePassword(e)}} value={styleState.style.loginScreenInfo.password}/>
+                    <input type="password" onChange={(e) => {onChangePassword(e)}} onKeyUp={(e) => keyUp(e)} value={styleState.style.loginScreenInfo.password} placeholder="your password..."/>
                     <div style={{width: '100%', display: 'flex', flexDirection: 'row', justifyContent: 'space-between'}}>
                         <button className="primaryButton" onClick={() => closeForm()}>Close Form</button>
Index: components/RegisterScreen.jsx
===================================================================
--- components/RegisterScreen.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/RegisterScreen.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -2,4 +2,6 @@
 
 import { useSelector, useDispatch } from 'react-redux'
+
+import { useRef } from 'react'
 
 import { setStyle } from '../redux/reducers/styleSlice';
@@ -8,7 +10,22 @@
 
 const RegisterScreen = () => {
+    const ref = useRef(null);
+
     const dispatch = useDispatch();
 
     const styleState = useSelector(state => state.style);
+
+    setTimeout(() => {
+        if (styleState.style.displayRegisterScreen && styleState.style.registerScreenInfo.setFocus) {
+            ref.current.focus();
+            dispatch(setStyle({
+                ...styleState.style,
+                registerScreenInfo: {
+                    ...styleState.style.registerScreenInfo,
+                    setFocus: false
+                }
+            }))
+        }
+    }, 10);
 
     function onChangeUsername(e) {
@@ -40,4 +57,10 @@
             }
         }))
+    }
+
+    function keyUp(e) {
+        if (e.key === 'Enter') {
+            register();
+        }
     }
 
@@ -89,4 +112,5 @@
                             status: 'success',
                         },
+                        inlineAlertText: '',
                     }));
                 }
@@ -107,9 +131,9 @@
                 <div>
                     <span>Username:</span>
-                    <input type="text" onChange={(e) => {onChangeUsername(e)}} value={styleState.style.registerScreenInfo.username}/>
+                    <input ref={ref} type="text" onChange={(e) => {onChangeUsername(e)}} onKeyUp={(e) => keyUp(e)} value={styleState.style.registerScreenInfo.username} placeholder="your username..."/>
                     <span>Display Name:</span>
-                    <input type="text" onChange={(e) => {onChangeDisplayName(e)}} value={styleState.style.registerScreenInfo.displayName}/>
+                    <input type="text" onChange={(e) => {onChangeDisplayName(e)}} onKeyUp={(e) => keyUp(e)} value={styleState.style.registerScreenInfo.displayName} placeholder="your display name..."/>
                     <span>Password:</span>
-                    <input type="password" onChange={(e) => {onChangePassword(e)}} value={styleState.style.registerScreenInfo.password}/>
+                    <input type="password" onChange={(e) => {onChangePassword(e)}} onKeyUp={(e) => keyUp(e)} value={styleState.style.registerScreenInfo.password} placeholder="your password..."/>
                     <div style={{width: '100%', display: 'flex', flexDirection: 'row', justifyContent: 'space-between'}}>
                         <button className="primaryButton" onClick={() => closeForm()}>Close Form</button>
Index: components/blackjack/Blackjack.jsx
===================================================================
--- components/blackjack/Blackjack.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/blackjack/Blackjack.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -1,5 +1,5 @@
 import React from 'react'
 
-import InGameHeader from '../../components/InGameHeader'
+import BlackjackHeader from './BlackjackHeader'
 
 import Head from 'next/head'
@@ -18,5 +18,5 @@
       </Head>
   
-      <InGameHeader/>
+      <BlackjackHeader/>
 
       <PlayButtons/>
Index: components/blackjack/BlackjackHeader.jsx
===================================================================
--- components/blackjack/BlackjackHeader.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
+++ components/blackjack/BlackjackHeader.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -0,0 +1,269 @@
+import React from 'react'
+
+import Link from 'next/link'
+
+import { useRouter } from 'next/router'
+
+import { AiOutlineArrowLeft } from 'react-icons/ai'
+
+import { useEffect } from 'react'
+import { useDispatch, useSelector } from 'react-redux'
+
+import { setGame, setPlayer } from '../../redux/reducers/playerSlice'
+import { setBlackjack, setStyle } from '../../redux/reducers/styleSlice'
+
+import axios from 'axios';
+
+const BlackjackHeader = () => {
+    const dispatch = useDispatch();
+
+    const router = useRouter();
+
+    const playerState = useSelector(state => state.player);
+    const styleState = useSelector(state => state.style);
+
+    useEffect(() => {
+        // display loading screen
+        dispatch(setStyle({
+            ...styleState.style,
+            displayLoadingScreen: true,
+        }));
+
+        dispatch(setBlackjack({
+            ...styleState.blackjack,
+            inputControls: {
+                ...styleState.blackjack.inputControls,
+                initialBet: {
+                    ...styleState.blackjack.inputControls.initialBet,
+                    chosenCredits: parseInt(playerState.player.credits/2),
+                }
+            }
+        }));
+
+        axios.get(`/api/postgre?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(postgreRes => {
+            if (postgreRes.data?.success) {
+                dispatch(setPlayer({
+                    ...playerState.player,
+                    displayName: postgreRes.data?.displayName,
+                    session_id: postgreRes.data?.session_id,
+                    credits: postgreRes.data?.credits,
+                }));
+
+                axios.get(`/api/blackjack?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
+                    if (res.data?.success) {
+                        dispatch(setGame({
+                            ...playerState.game,
+                            status: res.data?.status,
+                            playerCards: res.data?.playerCards,
+                            dealerCards: res.data?.dealerCards,
+                        }))
+
+                        dispatch(setStyle({
+                            ...styleState.style,
+                            displayLoadingScreen: false,
+                        }))
+
+                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 5) {
+                            dispatch(setBlackjack({
+                                ...styleState.blackjack,
+                                inputControls: {
+                                    ...styleState.blackjack.inputControls,
+                                    initialBet: {
+                                        ...styleState.blackjack.inputControls.initialBet,
+                                        chosenCredits: parseInt(res.data?.initialBet),
+                                    },
+                                    sideBet: {
+                                        ...styleState.blackjack.inputControls.sideBet,
+                                        chosenCredits: 0,
+                                    }
+                                },
+                                displays: {
+                                    ...styleState.blackjack.displays,
+                                    initialBet: false,
+                                    hitStand: true,
+                                }
+                            }))
+
+                            if (res.data?.outcome === 'player_busted') {
+                                dispatch(setStyle({
+                                    ...styleState.style,
+                                    alert: {
+                                        show: true,
+                                        title: 'You busted!',
+                                        subtitle: `You lost $${-1*res.data?.earnings}`,
+                                        button: {
+                                            text: 'Play again',
+                                            action: 'play_again',
+                                        }
+                                    }
+                                }))
+                            }
+                            else if (res.data?.outcome === 'dealer_busted') {
+                                dispatch(setStyle({
+                                    ...styleState.style,
+                                    alert: {
+                                        show: true,
+                                        title: 'Dealer busted!',
+                                        subtitle: `You won $${res.data?.earnings}`,
+                                        button: {
+                                            text: 'Play again',
+                                            action: 'play_again',
+                                        }
+                                    }
+                                }))
+                            }
+                            else if (res.data?.outcome === 'player_won') {
+                                dispatch(setStyle({
+                                    ...styleState.style,
+                                    alert: {
+                                        show: true,
+                                        title: 'You won!',
+                                        subtitle: `You won $${res.data?.earnings}`,
+                                        button: {
+                                            text: 'Play again',
+                                            action: 'play_again',
+                                        }
+                                    }
+                                }))
+                            }
+                            else if (res.data?.outcome === 'player_lost') {
+                                dispatch(setStyle({
+                                    ...styleState.style,
+                                    alert: {
+                                        show: true,
+                                        title: 'You lost!',
+                                        subtitle: `You lost $${-1*res.data?.earnings}`,
+                                        button: {
+                                            text: 'Play again',
+                                            action: 'play_again',
+                                        }
+                                    }
+                                }))
+                            }
+                            else if (res.data?.outcome === 'draw') {
+                                dispatch(setStyle({
+                                    ...styleState.style,
+                                    alert: {
+                                        show: true,
+                                        title: 'Draw!',
+                                        subtitle: `You got your $${res.data?.earnings} back`,
+                                        button: {
+                                            text: 'Play again',
+                                            action: 'play_again',
+                                        }
+                                    }
+                                }))
+                            }
+                        }
+
+                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 4) {
+                            dispatch(setBlackjack({
+                                ...styleState.blackjack,
+                                inputControls: {
+                                    ...styleState.blackjack.inputControls,
+                                    initialBet: {
+                                        ...styleState.blackjack.inputControls.initialBet,
+                                        chosenCredits: parseInt(res.data?.initialBet),
+                                    },
+                                    sideBet: {
+                                        ...styleState.blackjack.inputControls.sideBet,
+                                        chosenCredits: 0,
+                                    }
+                                },
+                                displays: {
+                                    ...styleState.blackjack.displays,
+                                    initialBet: false,
+                                    hitStand: true,
+                                }
+                            }))
+                        }
+
+                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 3) {
+                            dispatch(setBlackjack({
+                                ...styleState.blackjack,
+                                inputControls: {
+                                    ...styleState.blackjack.inputControls,
+                                    initialBet: {
+                                        ...styleState.blackjack.inputControls.initialBet,
+                                        chosenCredits: parseInt(res.data?.initialBet),
+                                    },
+                                    sideBet: {
+                                        ...styleState.blackjack.inputControls.sideBet,
+                                        chosenCredits: parseInt(res.data?.sideBet),
+                                    }
+                                },
+                                displays: {
+                                    ...styleState.blackjack.displays,
+                                    initialBet: false,
+                                    hitStand: true,
+                                }
+                            }))
+                        }
+
+                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 2) {
+                            dispatch(setBlackjack({
+                                ...styleState.blackjack,
+                                inputControls: {
+                                    ...styleState.blackjack.inputControls,
+                                    initialBet: {
+                                        ...styleState.blackjack.inputControls.initialBet,
+                                        chosenCredits: parseInt(res.data?.initialBet),
+                                    }
+                                },
+                                displays: {
+                                    ...styleState.blackjack.displays,
+                                    initialBet: false,
+                                    sideBet: true,
+                                }
+                            }))
+                        }
+
+                        if (parseInt(res.data?.status.toString().substr(1, 1)) == 1) {
+                            dispatch(setBlackjack({
+                                ...styleState.blackjack,
+                                inputControls: {
+                                    ...styleState.blackjack.inputControls,
+                                    initialBet: {
+                                        ...styleState.blackjack.inputControls.initialBet,
+                                        chosenCredits: parseInt(postgreRes.data?.credits/2),
+                                    }
+                                },
+                            }))
+                        }
+                    }
+                });
+            }
+            else {
+                dispatch(setStyle({
+                    ...styleState.style,
+                    notification: {
+                        show: true,
+                        text: 'Please login in order to play blackjack.',
+                        status: 'error',
+                    },
+                    displayLoadingScreen: false,
+                }))
+
+                router.push('/');
+            }
+        });
+    }, []);
+
+    return (
+        <header className="header">
+            <Link href="/" passHref>
+                <h2>
+                    <AiOutlineArrowLeft />
+                </h2>
+            </Link>
+            <nav>
+                <ul>
+                    <li>Hi{playerState?.player?.displayName ? `, ${playerState.player.displayName}` : ``}</li>
+                    <li>Balance: ${playerState?.player?.credits}</li>
+                </ul>
+            </nav>
+        </header>
+    )
+}
+
+export default BlackjackHeader
Index: components/blackjack/Cards.jsx
===================================================================
--- components/blackjack/Cards.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/blackjack/Cards.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -2,6 +2,4 @@
 
 import { useSelector } from 'react-redux'
-
-import { useState } from 'react'
 
 import Card from '../Card'
@@ -9,9 +7,4 @@
 const Cards = () => {
   const playerState = useSelector(state => state.player)
-
-  let initialPos = {
-    left: 70,
-    top: 24,
-  }
 
   let playerPos = {
Index: components/blackjack/PlayButtons.jsx
===================================================================
--- components/blackjack/PlayButtons.jsx	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ components/blackjack/PlayButtons.jsx	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -8,5 +8,4 @@
 
 import { useSelector, useDispatch } from 'react-redux'
-import { useState, useEffect } from 'react'
 
 import axios from 'axios';
Index: .Dockerfile
===================================================================
--- db.Dockerfile	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ 	(revision )
@@ -1,3 +1,0 @@
-FROM postgres
-
-COPY caessino.sql /usr/local/app/caessino.sql
Index: docker-compose.yml
===================================================================
--- docker-compose.yml	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ docker-compose.yml	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -2,8 +2,7 @@
 services:
   db:
-    # image: postgres
     build:
       context: .
-      dockerfile: db.Dockerfile
+      dockerfile: docker_db.Dockerfile
     restart: always
     ports:
@@ -18,5 +17,5 @@
     build:
       context: .
-      dockerfile: server.Dockerfile
+      dockerfile: docker_server.Dockerfile
     restart: always
     ports:
Index: docker_db.Dockerfile
===================================================================
--- docker_db.Dockerfile	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
+++ docker_db.Dockerfile	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -0,0 +1,3 @@
+FROM postgres
+
+COPY dummy_database.sql /usr/local/app/dummy_database.sql
Index: docker_server.Dockerfile
===================================================================
--- docker_server.Dockerfile	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
+++ docker_server.Dockerfile	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -0,0 +1,11 @@
+FROM node:18
+
+COPY . /usr/local/app
+
+WORKDIR /usr/local/app
+
+RUN yarn install
+
+RUN yarn run build
+
+CMD [ "yarn", "run", "start" ]
Index: dummy_database.sql
===================================================================
--- dummy_database.sql	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
+++ dummy_database.sql	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -0,0 +1,80 @@
+DROP TABLE IF EXISTS "public"."players";
+-- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
+
+-- Squences
+CREATE SEQUENCE IF NOT EXISTS players_id_seq;
+
+-- Table Definition
+CREATE TABLE "public"."players" (
+    "id" int4 NOT NULL DEFAULT nextval('players_id_seq'::regclass),
+    "username" text NOT NULL,
+    "display_name" text NOT NULL,
+    "credits" float8
+);
+
+DROP TABLE IF EXISTS "public"."stats";
+-- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
+
+-- Squences
+CREATE SEQUENCE IF NOT EXISTS stats_id_seq;
+
+-- Table Definition
+CREATE TABLE "public"."stats" (
+    "id" int4 NOT NULL DEFAULT nextval('stats_id_seq'::regclass),
+    "username" text NOT NULL,
+    "blackjack_games" int8,
+    "roulette_games" int8,
+    "poker_games" int8,
+    "blackjack_won_games" int8,
+    "roulette_won_games" int8,
+    "poker_won_games" int8, 
+    "money_bet" int8,
+    "money_earned" int8
+);
+
+DROP TABLE IF EXISTS "public"."users";
+-- This script only contains the table creation statements and does not fully represent the table in database. It's still missing: indices, triggers. Do not use it as backup.
+
+-- Squences
+CREATE SEQUENCE IF NOT EXISTS users_id_seq;
+
+-- Table Definition
+CREATE TABLE "public"."users" (
+    "id" int4 NOT NULL DEFAULT nextval('users_id_seq'::regclass),
+    "username" text NOT NULL,
+    "password" text NOT NULL,
+    "salt" text NOT NULL
+);
+
+INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
+(9, 'david', 'Dvd', 1000);
+INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
+(6, 'simon', 'Simon', 3553);
+INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
+(8, 'gis', 'Gis', 1003);
+INSERT INTO "public"."players" ("id", "username", "display_name", "credits") VALUES
+(12, 'gigi', 'GG', 435),
+(10, 'test', 'Tester', 1000),
+(11, 'guest', 'guester', 1000);
+
+INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
+(6, 'gis', 0, 0, 0, 0, 0, 0, 0, 0);
+INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
+(7, 'david', 0, 0, 0, 0, 0, 0, 0, 0);
+INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
+(10, 'gigi', 7, 0, 0, 3, 0, 0, 4187, 3122);
+INSERT INTO "public"."stats" ("id", "username", "blackjack_games", "roulette_games", "poker_games", "blackjack_won_games", "roulette_won_games", "poker_won_games", "money_bet", "money_earned") VALUES
+(8, 'test', 0, 0, 0, 0, 0, 0, 0, 0),
+(9, 'guest', 0, 0, 0, 0, 0, 0, 0, 0),
+(4, 'simon', 10, 0, 0, 5, 0, 0, 5180, 3899);
+
+INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
+(10, 'simon', 'bcfdfad35ef0240e91e8bc969e0037b3ec1651a30fc5e0f56b2eb852124e592979f8b566abfbbe94872b43e43208e35053da81931a04d30f8b94460c2df52249', '99ab54b2affab7ec75ab3fbec005b4f0');
+INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
+(12, 'gis', '4df04931f518225d0d55afc0db5e69cf5453a2d5ef0f6266223611aefc390f3c8971e37e75944d11f7ad185e3c5e5390c1fffbc5ef6d909a74adb6852ee2cfe0', '2a84f05ebf62c6d692f99dc72eec0c6e');
+INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
+(13, 'david', 'e7cb9841fce607ab7d677fd3c6d02967249f92ac64c0bf0f14f84e1786f2a5787b2d2c7cbeece234f74aee0f75c27ae9fc354d088f30f89f5deef98865017ecb', 'a21f77281bba07b1d5ae5d5fe71ddf3d');
+INSERT INTO "public"."users" ("id", "username", "password", "salt") VALUES
+(14, 'test', '3b28f1d5ad3633ff23fbde106500e3ab6837779cad55092f83b9607294364177aa4eceb2e69f00bdd6f81cc6f062804a373d74503048dca1eceeb9de22425eab', '65ecbfcc453081ad8ae65470f7e50056'),
+(15, 'guest', 'a67c607687003434a04f89d805cc95b0a59bd310dfef6358b7e17c2a3c7b216f8c0c91d919fbfeea3c45635682b241b19d5a9841d83da43f164287c526efb924', '59eb67f0023c9b6fd246ff33382f739d'),
+(16, 'gigi', '690aa3232c85602d15fcaaf761ec0f7a14958df2c3054a177b5ac0a05584c959cde01015b009d95111798533add6bdf578867f5c58ebab8121a08b55b32c810c', '353a2adee3a03d28a7118ea138a76aac');
Index: pages/api/postgre/index.js
===================================================================
--- pages/api/postgre/index.js	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ pages/api/postgre/index.js	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -9,5 +9,5 @@
 const Pool = require('pg').Pool
 const pool = new Pool({
-  connectionString: 'postgres://postgres:postgres@db/postgres'
+  connectionString: `postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@${process.env.POSTGRES_HOST}/${process.env.POSTGRES_DB}`
 });
 
@@ -22,12 +22,4 @@
 // }
 
-// update credits in database
-// setInterval(() => {
-//   sessions.filter(session => Date.now() - session.lastActivity > 5*60*1000).forEach(session => {
-//     pool.query('UPDATE players SET credits = $1 WHERE username = $2', [session.credits, session.username], (error, results) => {
-//       if (error) throw error;
-//     });
-//   });
-// }, 5*60*1000)
 
 export default function handler(req, res) {
Index: pages/index.js
===================================================================
--- pages/index.js	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ pages/index.js	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -1,2 +1,4 @@
+import Head from 'next/head'
+
 import Header from '../components/Header'
 import FullwidthText from '../components/FullwidthText'
@@ -8,16 +10,17 @@
 import Notification from '../components/Notification'
 import Stats from '../components/Stats'
-
-import Head from 'next/head'
-
-import { useDispatch } from 'react-redux'
 import ManageCredits from '../components/ManageCredits'
 
 export default function Home() {
-  const dispatch = useDispatch();
-
   return (
     <div className="app" style={{backgroundImage: 'url("/images/bg.png")'}}>
       <Head>
+        <meta charSet="utf-8"/>
+        <meta name="description" content="Enjoy your stay at Caessino (The best E-Casino out there!). Play Blackjack, Roulette or Poker and win huge prizes!"/>
+        <meta name="keywords" content="caessino, e-casino, casino, blackjack, roulette, poker"/>
+
+        <meta name="author" content="ESS" />
+        <meta name="copyright" content="ESS CORP" />
+
         <title>Caessino</title>
       </Head>
Index: redux/reducers/styleSlice.js
===================================================================
--- redux/reducers/styleSlice.js	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ redux/reducers/styleSlice.js	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -7,4 +7,5 @@
         displayRegisterScreen: false,
         registerScreenInfo: {
+            setFocus: true,
             username: '',
             displayName: '',
@@ -13,4 +14,5 @@
         displayLoginScreen: false,
         loginScreenInfo: {
+            setFocus: true,
             username: '',
             password: '',
Index: rver.Dockerfile
===================================================================
--- server.Dockerfile	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ 	(revision )
@@ -1,11 +1,0 @@
-FROM node:18
-
-COPY . /usr/local/app
-
-WORKDIR /usr/local/app
-
-RUN yarn install
-
-RUN yarn run build
-
-CMD [ "yarn", "run", "start" ]
Index: styles/globals.css
===================================================================
--- styles/globals.css	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ styles/globals.css	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -78,5 +78,4 @@
 
 header.header nav ul li {
-  cursor: pointer;
   margin-right: 4rem;
 }
@@ -84,4 +83,8 @@
 header.header nav ul li:last-child {
   margin-right: 0;
+}
+
+header.header nav.mainHeaderNavigation ul li {
+  cursor: pointer;
 }
 
@@ -375,4 +378,6 @@
 .fs-inputs-container > div > input {
   margin-bottom: 2rem;
+  padding-left: 4px;
+  padding-right: 4px;
   font-size: 2rem;
 }
Index: styles/globals.css.map
===================================================================
--- styles/globals.css.map	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ styles/globals.css.map	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -1,5 +1,5 @@
 {
     "version": 3,
-    "mappings": "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",
+    "mappings": "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",
     "sources": [
         "globals.scss"
Index: styles/globals.scss
===================================================================
--- styles/globals.scss	(revision 87614a539b5a6d95f9aee8012bfdef4edeeb2fb5)
+++ styles/globals.scss	(revision 64dc53b0a494541c0f886c0ddbf1a83488532825)
@@ -80,10 +80,16 @@
 
       li {
-        cursor: pointer;
-
         margin-right: 4rem;
 
         &:last-child {
           margin-right: 0;
+        }
+      }
+    }
+
+    &.mainHeaderNavigation {
+      ul {
+        li {
+          cursor: pointer;
         }
       }
@@ -343,4 +349,7 @@
     &>input {
       margin-bottom: 2rem;
+
+      padding-left: 4px;
+      padding-right: 4px;
       
       font-size: 2rem;
