1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2024-12-08 00:44:30 +01:00

refactor: minor changes

This commit is contained in:
Divlo 2022-08-27 02:30:55 +02:00
parent 83231197dd
commit c1877297f8
No known key found for this signature in database
GPG Key ID: 8F9478F220CE65E9
12 changed files with 4189 additions and 7999 deletions

View File

@ -10,6 +10,7 @@
}, },
"rules": { "rules": {
"prettier/prettier": "error", "prettier/prettier": "error",
"unicorn/prefer-node-protocol": "error" "unicorn/prefer-node-protocol": "error",
"@next/next/no-img-element": "off"
} }
} }

View File

@ -1,15 +1,15 @@
FROM node:16.16.0 AS dependencies FROM node:16.17.0 AS dependencies
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY ./package*.json ./ COPY ./package*.json ./
RUN npm install RUN npm install
FROM node:16.16.0 AS builder FROM node:16.17.0 AS builder
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY ./ ./ COPY ./ ./
COPY --from=dependencies /usr/src/app/node_modules ./node_modules COPY --from=dependencies /usr/src/app/node_modules ./node_modules
RUN npm run build RUN npm run build
FROM node:16.16.0 AS runner FROM node:16.17.0 AS runner
WORKDIR /usr/src/app WORKDIR /usr/src/app
ENV NODE_ENV=production ENV NODE_ENV=production
COPY --from=builder /usr/src/app/next.config.js ./next.config.js COPY --from=builder /usr/src/app/next.config.js ./next.config.js

View File

@ -14,5 +14,3 @@ describe('<Footer />', () => {
) )
}) })
}) })
export {}

View File

@ -1,6 +1,7 @@
import { mount } from 'cypress/react' import { mount } from 'cypress/react'
import './commands' import './commands'
import '../../styles/global.css'
declare global { declare global {
namespace Cypress { namespace Cypress {

12138
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -66,20 +66,20 @@
"@saithodev/semantic-release-backmerge": "2.1.2", "@saithodev/semantic-release-backmerge": "2.1.2",
"@semantic-release/git": "10.0.1", "@semantic-release/git": "10.0.1",
"@tailwindcss/typography": "0.5.4", "@tailwindcss/typography": "0.5.4",
"@types/node": "18.7.11", "@types/node": "18.7.13",
"@types/react": "18.0.17", "@types/react": "18.0.17",
"@types/unist": "2.0.6", "@types/unist": "2.0.6",
"@typescript-eslint/eslint-plugin": "5.34.0", "@typescript-eslint/eslint-plugin": "5.35.1",
"autoprefixer": "10.4.8", "autoprefixer": "10.4.8",
"cypress": "10.6.0", "cypress": "10.6.0",
"editorconfig-checker": "4.0.2", "editorconfig-checker": "4.0.2",
"eslint": "8.22.0", "eslint": "8.23.0",
"eslint-config-conventions": "3.0.0", "eslint-config-conventions": "3.0.0",
"eslint-config-next": "12.2.5", "eslint-config-next": "12.2.5",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "8.5.0",
"eslint-plugin-import": "2.26.0", "eslint-plugin-import": "2.26.0",
"eslint-plugin-prettier": "4.2.1", "eslint-plugin-prettier": "4.2.1",
"eslint-plugin-promise": "6.0.0", "eslint-plugin-promise": "6.0.1",
"eslint-plugin-unicorn": "43.0.2", "eslint-plugin-unicorn": "43.0.2",
"html-w3c-validator": "1.2.0", "html-w3c-validator": "1.2.0",
"husky": "8.0.1", "husky": "8.0.1",
@ -89,10 +89,10 @@
"postcss": "8.4.16", "postcss": "8.4.16",
"prettier": "2.7.1", "prettier": "2.7.1",
"prettier-plugin-tailwindcss": "0.1.13", "prettier-plugin-tailwindcss": "0.1.13",
"semantic-release": "19.0.4", "semantic-release": "19.0.5",
"start-server-and-test": "1.14.0", "start-server-and-test": "1.14.0",
"tailwindcss": "3.1.8", "tailwindcss": "3.1.8",
"typescript": "4.7.4", "typescript": "4.8.2",
"vercel": "28.1.1" "vercel": "28.2.0"
} }
} }

View File

@ -37,6 +37,14 @@ const BlogPostPage: NextPage<BlogPostPageProps> = (props) => {
<MDXRemote <MDXRemote
{...post.source} {...post.source}
components={{ components={{
img: (properties) => {
const { src, alt, ...props } = properties
let source = src
if (src?.startsWith('../public/') ?? false) {
source = src?.replace('../public/', '/')
}
return <img src={source} alt={alt} {...props} />
},
a: (props: React.ComponentPropsWithoutRef<'a'>) => { a: (props: React.ComponentPropsWithoutRef<'a'>) => {
if (props.href?.startsWith('#') ?? false) { if (props.href?.startsWith('#') ?? false) {
return <a {...props} /> return <a {...props} />

View File

@ -21,7 +21,7 @@ The source code is available on [GitHub](https://github.com/Thream).
The idea is that a user can create an account to authenticate with an email address, and a password, or directly use an account from another platform (currently supported: Google, GitHub, Discord). Once the user is authenticated, he/she can create and join "guilds", in other words communities, in order to discuss with other people in several channels to group discussions talking about the same subject. The idea is that a user can create an account to authenticate with an email address, and a password, or directly use an account from another platform (currently supported: Google, GitHub, Discord). Once the user is authenticated, he/she can create and join "guilds", in other words communities, in order to discuss with other people in several channels to group discussions talking about the same subject.
![The Thream app on a community page](/images/posts/thream-v1-0-0/thream-ui.png) ![The Thream app on a community page](../public/images/posts/thream-v1-0-0/thream-ui.png)
[**Thream**](https://www.thream.divlo.fr/) is a website that works on any recent browser, accessible on [thream.divlo.fr](https://www.thream.divlo.fr/). [**Thream**](https://www.thream.divlo.fr/) is a website that works on any recent browser, accessible on [thream.divlo.fr](https://www.thream.divlo.fr/).
@ -33,7 +33,7 @@ The main goal is to put into **practice knowledge in web development** and compu
The development of the project begins under the name of **SocialProject**, on August 20, 2020, with colors close to the image of Divlo. The development of the project begins under the name of **SocialProject**, on August 20, 2020, with colors close to the image of Divlo.
![SocialProject](/images/posts/thream-v1-0-0/social-project.jpg) ![SocialProject](../public/images/posts/thream-v1-0-0/social-project.jpg)
When I started the project, I had little knowledge of database design, real-time management or the architecture of such a large <abbr title="Information Technology">IT</abbr> project, so this will be accompanied by many technical problems, to which we will need to find appropriate solutions. When I started the project, I had little knowledge of database design, real-time management or the architecture of such a large <abbr title="Information Technology">IT</abbr> project, so this will be accompanied by many technical problems, to which we will need to find appropriate solutions.
@ -56,7 +56,7 @@ Since the project is mainly developed during free time (mainly on weekends), the
<p className='flex flex-col items-center justify-center'> <p className='flex flex-col items-center justify-center'>
<img <img
alt='HTTP Communication Schema' alt='HTTP Communication Schema'
src='/images/posts/thream-v1-0-0/http-communication.png' src='../public/images/posts/thream-v1-0-0/http-communication.png'
/> />
</p> </p>

View File

@ -37,8 +37,8 @@ export const getPosts = async (): Promise<PostMetadata[]> => {
const posts = await fs.promises.readdir(POSTS_PATH) const posts = await fs.promises.readdir(POSTS_PATH)
const postsWithTime = await Promise.all( const postsWithTime = await Promise.all(
posts.map(async (postFilename) => { posts.map(async (postFilename) => {
const [slug] = postFilename.split('.') const [slug, extension] = postFilename.split('.')
const blogPostPath = path.join(POSTS_PATH, `${slug}.mdx`) const blogPostPath = path.join(POSTS_PATH, `${slug}.${extension}`)
const blogPostContent = await fs.promises.readFile(blogPostPath, { const blogPostContent = await fs.promises.readFile(blogPostPath, {
encoding: 'utf8' encoding: 'utf8'
}) })