Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
1a32d5c
nuxt files installed
Aug 17, 2023
5a895b1
obsolete vite config removed
Aug 17, 2023
9953bd1
obsolete config removed
Aug 17, 2023
f456988
tailwind config cleanup
Aug 17, 2023
caee396
bugfix: missing pinia installed
Aug 17, 2023
d764c59
stores refactored
Aug 17, 2023
3b081cd
assets moved
Aug 17, 2023
9bdc140
utils moved
Aug 17, 2023
d964c32
components moved
Aug 17, 2023
64830cc
api moved into server
Aug 17, 2023
fea03f2
compoent path prefixing disabled
Aug 17, 2023
52e9340
social links moved to server api
Aug 17, 2023
12a9814
- import.meta.env replaced by process.env
Aug 17, 2023
a43625c
usefetch converted to composable
Aug 18, 2023
977c8f9
profile store converted to lazy fetch composable
Aug 18, 2023
0cfb18a
social links data splitted
Aug 18, 2023
63236a8
mocks moved to data folder
Aug 18, 2023
686817f
.env removed from the repository
Aug 19, 2023
adda697
mock generator refactored
Aug 20, 2023
523806f
api refactored
Aug 20, 2023
a443d7a
github api fetching refactored
Aug 20, 2023
5524c24
obsolete fetch-wth-cache removed
Aug 20, 2023
e2eb6b3
mock fallbacks removed
Aug 20, 2023
1575d3d
bugfix: particles must be loaded as plugin
Aug 20, 2023
9527cf9
mocker refactored
Aug 20, 2023
25cf654
mocks data removed
Aug 20, 2023
1c91f1e
mocks dir ignored
Aug 20, 2023
bb9747d
purge must check existence
Aug 20, 2023
552a284
Merge pull request #70 from webceyhan/main
webceyhan Aug 20, 2023
c3094f7
Merge branch 'develop' into nuxt-migration
webceyhan Aug 20, 2023
afb8f75
Merge pull request #71 from webceyhan/nuxt-migration
webceyhan Aug 20, 2023
baec940
.env sample added
Aug 20, 2023
99498d5
cache console log reduced
Aug 20, 2023
9610eb0
logging added for fetch-github-api
Aug 21, 2023
bd09281
make-url should return string
Aug 21, 2023
7e39637
server constants converted to ts
Aug 21, 2023
acfaf3f
/api/profile converted to ts
Aug 21, 2023
ad3263e
social-links migrated
Aug 21, 2023
075be7c
api types refactored
Aug 21, 2023
f56481b
repo and languages refactored
Aug 21, 2023
a1f8f41
profile updated_at added
Aug 21, 2023
1e79ba3
obsolete api route removed
Aug 21, 2023
20e6e20
etag caching replaced by memory storage
Aug 21, 2023
d7adc3c
useCache util impl.
Aug 21, 2023
7ab4a88
util renamed
Aug 21, 2023
28c8e19
composables renamed and converted to ts
Aug 21, 2023
a1d10aa
obsolete import removed
Aug 21, 2023
027c2ad
topics api impl.
Aug 21, 2023
89e44a4
topics api impl.
Aug 21, 2023
70f159e
languages api impl.
Aug 22, 2023
65c2578
topics refactored
Aug 22, 2023
ed306bf
languges refactored
Aug 22, 2023
7e2d162
repo sort condition changed from updated to pushed
Aug 22, 2023
f22c2c5
repo languges and topics refactored
Aug 22, 2023
f024fb8
obsolete loggers removed
Aug 22, 2023
e506cc6
obsolete cache util removed
Aug 22, 2023
3c553db
misc utils cleanup
Aug 22, 2023
f27b0a3
obsolete makeUrl util removed
Aug 22, 2023
0b0f4e1
makeUrl helper removed
Aug 22, 2023
c21c9ac
plugin migrated to ts
Aug 22, 2023
fea6815
all components migrated to ts
Aug 22, 2023
3c0e165
build-deploy action adapted for static site generation
Aug 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .env

This file was deleted.

10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# social-link handles
USER_GITHUB=
USER_REDDIT=
USER_LINKEDIN=
USER_TWITTER=
USER_INSTAGRAM=

# github api
GITHUB_API_TOKEN=
GITHUB_API_USERNAME=
2 changes: 1 addition & 1 deletion .github/workflows/build-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run: |
npm ci
npm run build
npm run generate

- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.2.2
Expand Down
26 changes: 23 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
server/mocks

# Node dependencies
node_modules

# Logs
logs
*.log

# Misc
.DS_Store
dist
dist-ssr
*.local
.fleet
.idea

# Local env files
.env
.env.*
!.env.example
2 changes: 2 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
shamefully-hoist=true
strict-peer-dependencies=false
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ You need to install the [Node.js](https://nodejs.dev/) and `npm` package manager
4. Set your social link handles in .env file.
```sh
# social-link handles
VITE_USER_GITHUB=
VITE_USER_REDDIT=
VITE_USER_LINKEDIN=
VITE_USER_TWITTER=
VITE_USER_INSTAGRAM=
USER_GITHUB=
USER_REDDIT=
USER_LINKEDIN=
USER_TWITTER=
USER_INSTAGRAM=
```
5. Setup your GitHub profile settings to show in header section.
```sh
Expand Down Expand Up @@ -125,11 +125,10 @@ The workflow will build the project using npm and output the result to the `dist

## References

- [Node.js](https://nodejs.dev/)
- [Vite](https://vitejs.dev/)
- [Vue.js](https://vuejs.org/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Nuxt.js](https://nuxtjs.org/)
- [DaisyUI](https://daisyui.com/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Bootstrap Icons](https://icons.getbootstrap.com/)
- [GitHub REST API](https://docs.github.com/en/rest)
- [GitHub Actions](https://docs.github.com/en/actions)
Expand Down
8 changes: 8 additions & 0 deletions app.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<template>
<div class="space-y-10">
<AppHeader />
<AppParticles />
<AppProjects />
<AppFooter />
</div>
</template>
File renamed without changes.
9 changes: 4 additions & 5 deletions src/sections/AppFooter.vue → components/AppFooter.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<script setup>
import { useSocial } from "@/store/social";
import SocialNav from "./partials/SocialNav.vue";

const { links } = useSocial();
<script setup lang="ts">
const { data: links } = await useFetch("/api/social-links", {
default: () => [],
});
</script>

<template>
Expand Down
34 changes: 14 additions & 20 deletions src/sections/AppHeader.vue → components/AppHeader.vue
Original file line number Diff line number Diff line change
@@ -1,33 +1,26 @@
<script setup>
import { computed, ref } from "vue";
import { storeToRefs } from "pinia";
<script setup lang="ts">
// @ts-ignore
import VueWriter from "vue-writer";
import { timestamp } from "@/utils";
import { useProfileStore } from "@/store/profile";
import Loader from "@/components/Loader.vue";
import Avatar from "@/components/Avatar.vue";
import CoverUrl from "@/assets/bg-header.jpg";
import StatGroup from "@/components/StatGroup.vue";
import Stat from "@/components/Stat.vue";

const showLogo = ref(true);

const profileStore = useProfileStore();
const { profile, loading } = storeToRefs(profileStore);
const { data: profile } = await useFetch("/api/profile");

const titles = computed(() => {
return [profile.value.bio, "Open Source Contributor", "Web3 & Blockchain Enthusiast"];
});
const titles = computed(() => [
profile.value?.bio,
"Open Source Contributor",
"Web3 & Blockchain Enthusiast",
]);
</script>

<template>
<header
class="hero min-h-screen overflow-hidden bg-bottom"
:style="{ backgroundImage: `url(${CoverUrl})` }"
style="background-image: url(/img/bg-header.jpg)"
>
<!-- <div class="hero-overlay bg-opacity-60"></div> -->
<div class="hero-content flex-col text-center md:text-left text-neutral-content">
<Loader v-if="loading" ring class="w-52" />
<Loader v-if="!profile" class="w-52" ring />

<template v-else>
<div class="flex flex-col md:flex-row items-center">
Expand All @@ -42,7 +35,7 @@ const titles = computed(() => {
{{ profile.name }}
</h1>

<p class="text-xl lg:text-3xl">
<div class="text-xl lg:text-3xl">
<!-- profession -->
<VueWriter
:array="titles"
Expand All @@ -59,11 +52,11 @@ const titles = computed(() => {
<img
v-if="showLogo"
class="w-36 h-auto inline-block"
src="@/assets/company-logo.png"
src="/img/company-logo.png"
@error="showLogo = false"
/>
<span v-else class="text-nowrap">{{ profile.company }}</span>
</p>
</div>
</div>
</div>

Expand All @@ -77,3 +70,4 @@ const titles = computed(() => {
</div>
</header>
</template>
composables/profile
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
<script setup>
import { ParticlesComponent } from "vue3-particles";
<script setup lang="ts">
import { loadSlim } from "tsparticles-slim";

const particlesInit = async (engine) => {
const particlesInit = async (engine: any) => {
await loadSlim(engine);
};

const particlesLoaded = async (container) => {
// console.log("Particles container loaded", container);
};
const particlesLoaded = async (container: any) => {};

const options = {
// background: {
Expand Down Expand Up @@ -87,7 +84,7 @@ const options = {
</script>

<template>
<ParticlesComponent
<vue-particles
id="tsparticles"
:particlesInit="particlesInit"
:particlesLoaded="particlesLoaded"
Expand Down
13 changes: 1 addition & 12 deletions src/sections/AppProjects.vue → components/AppProjects.vue
Original file line number Diff line number Diff line change
@@ -1,18 +1,7 @@
<script setup>
<script setup lang="ts">
import { useTopicStore } from "@/store/topic";
import { useLanguageStore } from "@/store/language";
import { useRepositoryStore } from "@/store/repository";
import Loader from "@/components/Loader.vue";
import Heading from "@/components/Heading.vue";
import Divider from "@/components/Divider.vue";
import Drawer from "../components/Drawer.vue";
import Button from "@/components/Button.vue";
import Icon from "@/components/Icon.vue";
import Collapse from "@/components/Collapse.vue";
import Accordion from "@/components/Accordion.vue";
import TopicFilterNav from "./partials/TopicFilterNav.vue";
import LanguageFilterNav from "./partials/LanguageFilterNav.vue";
import RepositoryList from "./partials/RepositoryList.vue";

const topicStore = useTopicStore();
const languageStore = useLanguageStore();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<script setup>
import Link from "@/components/Link.vue";
import Icon from "@/components/Icon.vue";
<script setup lang="ts">
// todo: this must be override default NuxtLink in config files
import Link from "@/components/ui/Link.vue";
import { SocialLink } from "@/server/types/social";

defineProps({
links: Array,
});
defineProps<{
links: SocialLink[];
}>();
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
<script setup>
import Heading from "@/components/Heading.vue";
import Button from "@/components/Button.vue";
import Icon from "@/components/Icon.vue";
import ProgressBar from "@/components/ProgressBar.vue";
<script setup lang="ts">
import { Language } from "server/types/repo";

const emit = defineEmits(["update:modelValue"]);

const props = defineProps({
modelValue: String,
languages: Array,
});
const props = defineProps<{
modelValue: string | null;
languages: Language[];
}>();

const onToggle = (name) => {
const onToggle = (name: string) => {
const active = props.modelValue === name;
emit("update:modelValue", active ? null : name);
};
Expand All @@ -21,7 +18,7 @@ const onToggle = (name) => {
<div class="space-y-2">
<Heading small> Languages </Heading>

<progress-bar :items="languages" />
<ProgressBar :items="(languages as any[])" />

<nav class="flex flex-wrap gap-1">
<Button
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<script setup>
import Icon from "@/components/Icon.vue";
<script setup lang="ts">
import { Language } from "server/types/repo";

defineProps({
languages: Array,
});
defineProps<{
languages: Language[];
}>();

// filter significant languages that has rate >= 1
const filterSignificant = (languages) => {
const filterSignificant = (languages: Language[]) => {
const filtered = languages.filter((lang) => lang.rate >= 1);
return filtered.sort((a, b) => b.rate - a.rate);
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
<script setup>
import { timestamp } from "@/utils";
import Card from "@/components/Card.vue";
import Icon from "@/components/Icon.vue";
import Link from "@/components/Link.vue";
import Badge from "@/components/Badge.vue";
import ProgressBar from "@/components/ProgressBar.vue";
import LanguageList from "./LanguageList.vue";
import TopicList from "./TopicList.vue";
<script setup lang="ts">
import Link from "@/components/ui/Link.vue";
import { Repo } from "server/types/repo";

defineProps({
repo: Object,
});
defineProps<{
repo: Repo;
}>();
</script>

<template>
Expand Down Expand Up @@ -72,7 +66,9 @@ defineProps({
]"
>
<TopicList :topics="repo.topics" class="max-sm:hidden" />
<ProgressBar :items="repo.languages" small />

<ProgressBar :items="(repo.languages as any[])" small />

<LanguageList :languages="repo.languages" />
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<script setup>
import Repository from "./Repository.vue";
<script setup lang="ts">
import { Repo } from "server/types/repo";

defineProps({
repos: Array,
});
defineProps<{
repos: Repo[];
}>();
</script>

<template>
<transition-group
<TransitionGroup
tag="div"
class="w-full flex flex-col gap-y-4"
enter-active-class="transform-gpu"
Expand All @@ -23,5 +23,5 @@ defineProps({
:repo="repo"
class="transition-all duration-300"
/>
</transition-group>
</TransitionGroup>
</template>
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<script setup>
import Button from "@/components/Button.vue";
<script setup lang="ts">
import { Topic } from "server/types/repo";

const emit = defineEmits(["update:modelValue"]);

const props = defineProps({
modelValue: String,
topics: Array,
});
const props = defineProps<{
modelValue: string;
topics: Topic[];
}>();

const onToggle = (topic) => {
const onToggle = (topic: string) => {
const active = props.modelValue === topic;
emit("update:modelValue", active ? null : topic);
};
Expand Down
Loading