Decouple client from server

Add Vite dependency and remove server side rendering to make it
possible to run the client independently.
Remove webpack config, replace with the `Vite` build tool.

GitLab: #55
Change-Id: I3a05d2e86cf6cb0ab91e77b3696f393132137575
diff --git a/client/src/redux/appSlice.ts b/client/src/redux/appSlice.ts
new file mode 100644
index 0000000..d5c01ee
--- /dev/null
+++ b/client/src/redux/appSlice.ts
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+import { createSlice, PayloadAction } from '@reduxjs/toolkit';
+import { Account } from 'jami-web-common';
+
+// Define a type for the slice state
+export interface appState {
+  accountId: string;
+  accountObject: Account | null;
+  refresh: boolean;
+}
+
+// Define the initial state using that type
+const initialState: appState = {
+  accountId: '',
+  accountObject: null,
+  refresh: true,
+};
+
+export const appSlice = createSlice({
+  name: 'app',
+  // `createSlice` will infer the state type from the `initialState` argument
+  initialState,
+  reducers: {
+    setAccountId: (state, action: PayloadAction<string>) => {
+      state.accountId = action.payload;
+    },
+    setAccountObject: (state, action: PayloadAction<Account>) => {
+      state.accountObject = action.payload;
+    },
+    setRefreshFromSlice: (state) => {
+      state.refresh = !state.refresh;
+    },
+  },
+});
+
+export const { setAccountId, setAccountObject, setRefreshFromSlice } = appSlice.actions;
+
+// Other code such as selectors can use the imported `RootState` type
+// export const selectCount = (state: RootState) => state.app.value;
+
+export default appSlice.reducer;